我已經對這個主題做了一些廣泛的研究。但我什麼都沒發現。看來,當我運行shell_exec()它總是返回false。即使輸出是真的。PHP - Shell_exec和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' 屏幕,在被跑步時運行的屏幕PID,但仍然返回false。即使我在PuTTY中使用該命令,它也會返回true。
以下是文件的權限:
[email protected]:~# 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
[email protected]:~# 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
任何幫助將是不錯!
謝謝!
擁有者是根,它解釋了它..在旁註中,'exec'返回false,而不是你的命令。做一個'==='檢查。 – Xorifelse
即使在將所有者設置爲www數據後,它也不起作用。我應該在哪裏放一個'==='? – diamondpumpkin