2016-05-02 220 views
0

我在網絡服務器nginx + php-fpm上有主要的php腳本,並嘗試使用來自網絡瀏覽器的GET請求在後臺運行另一個php腳本。在main.php行代碼中調用detect.php:PHP:無法在後臺執行腳本

exec("/usr/bin/php -f /var/www/detect.php 6 > /dev/null 2>&1 &");  

detect.php 不啓動。我沒有任何錯誤。

如果刪除 「&」:

exec("/usr/bin/php -f /var/www/detect.php 6 > /dev/null 2>&1 ");  

detect.php成功啓動。

從殼慶典以 「&」:

sudo -u www-data /usr/bin/php -f /var/www/detect.php 6 > /dev/null 2>&1 &  

腳本detect.php成功啓動。

+0

我需要在後臺運行detect.php! main.php中有很多其他的動作和其他腳本。我不能等detect.php完成。 –

+0

與客戶端的連接關閉後,您可以同步運行嗎? – Jerry

回答

0

試試這個,並確保你的PHP路徑是正確的

 $dir=dirname(__FILE__); 
     $file_name="detect.php"; 
     $php_path="/usr/bin/php"; 

     $args = array(6); 

     $command1="cd $dir"; 
     $command2="$php_path $file_name ".implode(" ",$args) ." > /dev/null 2>/dev/null &"; 

     $final_command=$command1."; ".$command2; 
     shell_exec($final_command); 
+0

沒有成功,用戶www-data在/ etc/passwd中沒有shell並且無法運行「cd」命令。 –

+0

@AndreyAndreev我在本地(MAMP,php7)和服務器(CentOS,PHP5.6)上測試這個代碼,並且工作,都是可執行方法的作品?嘗試執行(「mkdir test_dir」) –

+0

我是舒爾執行工程。在我的帖子中,我寫道:沒有「&」=背景detect.php啓動並正常工作。 detect.php可以創建登錄/ tmp /並做很多其他工作,我檢查過。 –