PHP - Shell_exec和exec在运行时返回false

时间:2016-12-18 19:29:42

标签: php ubuntu

我对这个话题进行了一些广泛的研究。但我一无所获。看来,当我运行shell_exec()时,它总是返回false。即使输出为真。

PHP脚本:

$tmp1 = exec("/var/www/html/online/files/test.sh 2>&1");

test.sh Bash脚本:

var=$(screen -ls | awk -F'[. ]' '/.onoff/ {print $1}')
if [ -z "$var" ]; then
  echo "false"
else
  echo "true"
fi

它正在测试一个名为“onoff'它在运行时运行,但仍然返回false。即使我在PuTTY中使用该命令,它也会返回true。

以下是文件的权限:

root@s94029:~# ls -la /var/www/html/online
drwxr-xr-x  3 root root 4096 Dec 18 12:34 .
drwxr-xr-x 12 root root 4096 Dec 18 09:30 ..
drwxr-xr-x  2 root root 4096 Dec 18 11:54 files
-rwxr-xr-x  1 root root  221 Dec 18 04:59 index.css
-rwxr-xr-x  1 root root 4310 Dec 18 12:55 index.php
-rwxr-xr-x  1 root root  417 Dec 18 06:40 servers.php
root@s94029:~# ls -la /var/www/html/online/files
drwxr-xr-x 2 root root 4096 Dec 18 11:54 .
drwxr-xr-x 3 root root 4096 Dec 18 12:34 ..
-rwxr-xr-x 1 root root  115 Dec 18 11:54 test1.sh
-rwxr-xr-x 1 root root  114 Dec 18 11:54 test.sh

任何帮助都会很好!

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试exec($command, $output, $status) 检查输出和状态变量。状态变量中的非零是错误。零是成功。

执行此操作后检查文件的所有权...如果您仍然遇到问题,请将www-data(apache)用户添加到文件的所有权中。

exec('/var/www/html/online/files/test.sh 2>&1', $output, $status);

print_r($output);
echo $status;