我对这个话题进行了一些广泛的研究。但我一无所获。看来,当我运行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
任何帮助都会很好!
谢谢!
答案 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;