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

php shell_exec can run command but not sh file

来自 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 我想我有执行命令的 root 权限

您的 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

这将解决您的问题

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