2013-06-12 34 views
0

我有一個PHP腳本通過exec調用命令行工具。它可以在我的(基於Xubuntu Linux的)開發機器上正常工作,但在生產服務器上的基於(基於CentOS Linux的)測試環境中卻無法正常工作。PHP執行不起作用 - 沒有輸出產生

爲了找出錯誤,我已經創建了下面的測試腳本:

<?php 

    $command = "echo test"; 
    $output = array(); 
    exec($command, $output); 

    foreach ($output as $line) 
    { 
    echo "new line: " . $line . "\n"; 
    } 

    echo "done"; 
?> 

當我通過php test.php運行此,我得到下面的輸出。

done 

I.e.似乎exec命令不會產生任何輸出,就像我真實的腳本中的情況一樣。

這種行爲的原因是什麼或在哪裏尋找更多信息?

+1

您的測試機是基於Linux的機器嗎?或窗戶? –

+0

開發環境和測試/生產機器都是基於Linux的。我更新了這個問題以反映這一點。 –

回答

1

許多網絡服務器在默認情況下會禁用某些PHP功能(有些還不允許您修改這些默認設置)。如果你有一個半途體面的網絡服務器,你應該可以編輯php.ini文件。找一條類似這樣的行:

disable_functions =exec,passthru,shell_exec [ etc... ] 

如果您看到這一點,請從列表中刪除exec並重新啓動您的Web服務。