2012-12-12 105 views
1

我有一個php文件,需要在我的Php應用程序中運行CodeIgniter框架的CLI中執行。我嘗試了exec和shell_exec命令,似乎沒有啓動該進程。請找到我嘗試執行的代碼。從PHP應用程序運行PHP CLI腳本

$phpPath = exec('which php'); 
$cmd = $phpPath.' '.dirname(__DIR__).'/API/notification/NotificationServer.php'; 
echo "<pre>".shell_exec($cmd)."</pre>"; 

當我嘗試運行上面的終端它執行罰款。一旦用戶設置了會話,我需要自動觸發該事件。

的路徑/ $ CMD可變打印

當我打印變量$ CMD我得到下面的輸出

,並在下面給出終端時工作正常。

/usr/bin/php /Users/lalithb/Desktop/Android/AndroidWS/API/notification/NotificationServer.php 

上面的命令在終端工作正常。當我嘗試exec/shell_exec它,它不工作。

APACHE_ERROR日誌:

sh: line 1: 2437 Trace/BPT trap: 5  /usr/bin/php 
sh: line 1: /Users/lalithb/Desktop/Android/AndroidWS/API/notification/NotificationServer.php: Permission denied 

有人可以幫我在運行在CLI這上面的代碼?

+0

因此,如果它不啓動該過程,會發生什麼?任何錯誤,警告或通知?確保你一直在啓動'error_reporting'。也許你需要指定'php'二進制文件和你試圖調用的腳本的完整路徑和完整路徑? – Charles

+0

我已經提供了php二進制文件的完整路徑,我無法設置權限。我沒有sudo訪問我正在使用的服務器,有沒有辦法運行上面的代碼? –

+0

@Charles謝謝,我找到了解決方案。 –

回答

0

我解決了這個問題,猜猜會有像我這樣的其他人試圖訪問受限制的文件夾。我發現這裏的解決方案

http://ubuntuforums.org/showthread.php?t=1302259

exec('chmod +x'.dirname(__DIR__).'/API/notification/NotificationServer.php); 

上述工作的法寶。

+0

'chmod + x'修好了嗎?這很奇怪。據我所知,PHP通常只需要讀取權限,除非你使用cgi shebang。 – goat

+0

NotificationServer.php文件必須作爲一個進程運行(我讀取這被稱爲服務器守護進程,不知道到底是什麼意思),所以文件需要可執行權限。 –