博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php脚本运行shell命令
阅读量:6092 次
发布时间:2019-06-20

本文共 1476 字,大约阅读时间需要 4 分钟。

了解python的朋友都知道,python的os模块中system()方法可以执行shell命令行,因此执行与操作系统相关的内容;

而php中,同样存在这样的函数:system(),exec(),passthru()

system — 执行外部程序,并且显示输出

string system ( string $command [, int &$return_var ] )

如果 PHP 运行在服务器模块中, system() 函数还会尝试在每行输出完毕之后, 自动刷新 web 服务器的输出缓存。

如果要获取一个命令未经任何处理的 原始输出, 请使用  函数。

command

要执行的命令。

return_var

如果提供 return_var 参数, 则外部命令执行后的返回状态将会被设置到此变量中。

<?php

echo '<pre>';
// 输出 shell 命令 "ls" 的返回结果
// 并且将输出的最后一样内容返回到 $last_line。
// 将命令的返回值保存到 $retval。
$last_line = system('ls', $retval);
// 打印更多信息
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>

提醒:在php.ini配置中safe_mode=on时,需要特别注意

safe_mode =  (这个如果为off下面两个就不用管了)

disable_functions = 
safe_mode_exec_dir=

将需要执行的脚本放置到safe_mode_exec_dir指定的路径下

exec()

 
原型:string exec (string command [, string array [, int return_var]])
 
exec() 函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。

exec("/bin/ls -l");

exec("/bin/ls -l", $res);
#$res是一个数据,每个元素代表结果的一行
exec("/bin/ls -l", $res, $rc);
#$rc的值是命令/bin/ls -l的状态码。成功的情况下通常是0

void passthru ( string $command [, int &$return_var ] )

同  函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代  或  函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。

 

以上希望对您有帮助,其实也是我自己温故的pool;

转载于:https://www.cnblogs.com/zhirusi/p/8149166.html

你可能感兴趣的文章
Visual Studio Code 使用 ESLint 增强代码风格检查
查看>>
iOS设备中的推送(二):证书
查看>>
敏捷 - #3 原则:经常提供工作软件 ( #3 Agile - Principle)
查看>>
数据结构与算法:二分查找
查看>>
使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
查看>>
iOS开发-NSPredicate
查看>>
Exchange Server 2003 SP2 数据存储大小限制修改
查看>>
expr命令用法-实例讲解
查看>>
酷派8705救砖
查看>>
iOS10里的通知与推送
查看>>
# C 语言编写二进制/十六进制编辑器
查看>>
EMS SQL Management Studio for MySQL
查看>>
我的友情链接
查看>>
做母亲不容易
查看>>
详细的文档(吐槽)
查看>>
DEVEXPRESS 随记
查看>>
Ember.js 入门指南——{{action}} 助手
查看>>
VMware下安装QT Creator
查看>>
Linux时间同步设置
查看>>
Measure Graphics Performance
查看>>