我在執行unix腳本時遇到問題at
php webscript中的job命令。 與at
工作的PHP是這樣的:從PHP腳本unix`at`,在shell中工作,但不是從網絡中運行
$output=exec('echo "/usr/bin/perl /home/dir/test.pl" | /usr/bin/at now +1minute')
這將罰款從shell命令提示符。我可以執行php腳本,運行atq
以查看該作業已設置並且該作業屬於根。然後等待並確認test.pl腳本已經運行。 test.pl腳本對數據庫執行一個簡單的更新,我可以檢查以確認一切正常。
當我從網上執行php腳本時,回到我的shell並再次運行atq
。我可以看到工作已經完成,這次工作屬於apache,所以一切看起來都很好。但是在等待預定的時間之後,test.pl腳本不會執行,我可以在看到db的更新沒有奏效之後再進行確認。
我相信這一定是一個權限問題,但我不確定。我嘗試給/ home/dir和test.pl腳本所有權到Apache,但這仍然無法正常工作。我試圖在webroot文件夾中創建一個符號鏈接到/ home/dir,但這似乎也沒有幫助。我不知道Apache的權限,所以我可以忽略一些東西。
這裏是目錄和test.pl ls -l
輸出中
/home/dir
drwxrwxr-x 2 apache apache
test.pl
-rwxr-xr-x 1 apache apache
感謝在這一個任何幫助。
我可能會誤解,但你可以嘗試將'test.pl'的權限改爲'chmod 777'。另外,Apache通常不具有所有權,管理員或用戶可以。 –