這只是爲我工作:
<?php
$cmd = "/usr/bin/php /home/auser/a.php &> /dev/null &";
exec($cmd,$output,$return);
sleep(30);
if($return===0)
{
echo 'Successful';
}
else
{
echo 'Unsuccessful';
}
?>
我救它作爲runa.php並在命令窗口中的PHP runa.php運行它。 它產生了3個文件。
運行a.php只會也是從cron作業工作:
]$ crontab -l
18 * * * * /usr/bin/php /home/auser/a.php
我把劇本中的web目錄,並發現我有一些寫作的問題。你可以在服務器日誌中看到什麼?
sudo tail -f /var/log/httpd/error_log
如果從網絡瀏覽器中打a.php會怎樣?因爲你提到的腳本是755,但是目錄怎麼樣。也許它需要775或777進行測試,以便腳本可以寫入文件?
爲了測試我創建了一個子目錄「輸出」,改變a.php只會
<?php
ini_set('date.timezone','America/New_York'); //without this it makes extra messages
error_log("a.php putting contents", 0);
file_put_contents("output/".date("s"),"");
sleep(5);
file_put_contents("output/".date("s"),"");
sleep(5);
file_put_contents("output/".date("s"),"");
error_log("a.php done", 0);
?>
它無法寫入文件,直到我給寫權限的文件夾輸出中
sudo chmod 777 /var/www/html/output
然後我發現了Apache用戶正在寫入文件:
~]$ sudo ls -l /var/www/html/output/
total 0
-rw-r--r--. 1 apache apache 0 Apr 18 11:38 00
-rw-r--r--. 1 apache apache 0 Apr 18 11:38 05
-rw-r--r--. 1 apache apache 0 Apr 18 11:37 55
所以我改變了輸出的所有者,在ord呃再次調低聽衆的意見。
~]$ sudo ls -lu /var/www/html/ | grep output
drwxr-xr-x. 2 apache root 4096 Apr 18 12:21 output
這也適用於現在:
~]$ sudo ls -l /var/www/html/output
total 0
-rw-r--r--. 1 apache apache 0 Apr 18 12:21 44
-rw-r--r--. 1 apache apache 0 Apr 18 12:21 49
-rw-r--r--. 1 apache apache 0 Apr 18 11:37 55
PHP外殼腳本仍然** ** MUST有'<?php'在其中觸發PHP模式。否則PHP會將其視爲文本。記住:沒有像「php腳本」這樣的東西。只有那些有php代碼塊的文件。 –
自從bash成功返回以來,您每次都獲得「成功」 - 也許與您無關。 – Fergus
我知道,但是我應該怎麼做才能使它工作? – Megadv