PHP 调用shell命令

Posted 一生不过烟花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 调用shell命令相关的知识,希望对你有一定的参考价值。

可以使用的命令:

popen
fpassthru
shell_exec
exec
system

 

1.popen

 

resource popen ( string command, string mode )

打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。

返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets() fgetss() 和 fwrite() 

如果出错返回 FALSE 

 

2.shell_exec

 

string shell_exec ( string cmd )

执行cmd命令,命令的结果存在返回结果中;

本函数在安全模式 下被禁用。

 

3.exec

 

string exec ( string command [, array &output [, int &return_var]] )

 

参数:
command
将要执行的命令

output
如果指定了output参数,则对应的array数组将会填满该命令输出的每一行。

return_var
如果指定了return_var参数,注意,return_var参数只有output参数被设定后才能指定,那么该命令的执行状态将会以结果参数的形式返回给该变量。 


返回值:
返回改名了的最后一行结果。


范例
例子 1. An exec() example
[[email protected] demo]# vi test.PHP
#!/usr/bin/php  -q
<?php

exec(‘ls /etc‘,$results,$ret);

echo  $results[5] . "/n";
echo  $results[12]. "/n";
echo  $results[3]. "/n";
echo  $ret;
?>

[[email protected] demo]# ./test.php 
aliases
audit
adjtime
0

 

4.system

 

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

system是开一个bash进程的,执行完毕之后,就会释放,如下就会达不到目的:

system("cd /home/y/share/NBHadoop/scripts");

system("sudo -u yahoo ./nb_halfhourly.sh $yes_halfHour");

可以写成:

system("cd /home/y/share/NBHadoop/scripts;sudo -u yahoo ./nb_halfhourly.sh $yes_halfHour");






































以上是关于PHP 调用shell命令的主要内容,如果未能解决你的问题,请参考以下文章

PHP 调用shell命令

关于php运行shell命令问题

php调用shell的方法技巧

为啥这个带有 shell_exec 调用的 PHP 脚本从 Windows 10 的命令行运行,而不是浏览器/本地主机?

如何从需要SUDO的php调用shell脚本?

php执行shell不阻塞方法