php shell_exec可以运行命令,但不能运行sh文件

时间:2018-10-27 14:38:38

标签: php bash shell exec

从PHP中,我可以使用shell_exec运行命令,但不能运行bash文件

我运行此命令

 sudo ls /var/www/

我得到结果

 /var/www/1.sh 
 /var/www/2.sh 
 /var/www/3.sh

但是当我运行此命令时没有任何反应

 $output = shell_exec('sudo sh /var/www/1.sh > /dev/null 2>&1');
 echo "<pre>$output</pre>";

在1.sh中,我添加了此代码

   #!/bin/bash
/usr/bin/echo "test" > TEST1.txt

它在我输入终端./1.sh时有效,因此仅来自php不能正常工作

服务器:centos 从PHP我认为我有执行命令的根本权限

2 个答案:

答案 0 :(得分:1)

您的bash脚本已输出到TEST1.txt文件中,而不是输出到控制台中!

尝试:

#!/bin/bash
/usr/bin/echo "test"

或者那样

$output = shell_exec('sudo sh /var/www/1.sh 2>&1');
echo "<pre>" .file_get_contents('/var/www/TEST1.txt'). "</pre>";

该字符串是错误的!!!!

  

$ output = shell_exec('sudo sh /var/www/1.sh 2>&1');

&1没有理由,因为没有定义

  

$ output = shell_exec('sudo sh /var/www/1.sh> / dev / null 2>&1');

在这种情况下,&1 === /dev/null

答案 1 :(得分:1)

这将解决您的问题

$output = shell_exec('sudo /usr/bin/sh  /var/www/1.sh > /dev/null 2>&1');