php调用系统命令

PHP作为一种服务器端的脚本语言,有时为了实现某个功能,必须 借助于操作系统的外部程序,这样可以做到事半功倍。php的内置函数exec,system都可以调用系统命令(shell命令),当 然还有passthru,escapeshellcmd等函数。

比如LINUX中修改服务器时间命令是 /xxx/date -s ’2013-01-01 11:10′,我们通过php函数exec调用这个命令执行修改时间exec(“xxx /xxx/date -s ’2013-01-01 11:10′”,$out,$status);其中$out是输出值,$status是返回值0或1,如果返回0则执行成功,返回1则执行失败。

注意:要想使用这几个函数,php.ini中的安全模式必须关闭,不然为了安全起见php是不让调用系统命令的。检查如下,
1) 首先查看php运行用户,可以在web服务器配置文件中查看,或者运行
echo shell_exec("id -a");

2) 查看php.ini中配置是否打开安全模式,主要是以下三个地方
safe_mode = (这个如果为off下面两个就不用管了)
disable_functions =
safe_mode_exec_dir=
下面你就可以用exec调用linux命令执行了。

system示例:
$a = system("dir",$out);

exec示例:
$a = exec("dir",$out,$status);

system、exce、passthru区别
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。

相同点:都可以获得命令执行的状态码

注意php运行用户的操作权限。

posted on 2013-01-05 11:30  kudosharry  阅读(592)  评论(0编辑  收藏  举报

导航