2017-05-05 74 views
1

我試圖使用php腳本來執行shell腳本。不過,我在Web服務器上顯然遇到了一些問題。在運行shell腳本的php上exec()的問題

我有一個名爲switch_audio.sh的bash腳本。它基本上改變了系統的有效音頻輸出。

我也有運行下面的代碼的script.php:

<?php 
    echo "It's working"; 
    exec("/var/www/html/switch_audio.sh"); 
?> 

當我執行php script.php它的正常工作。但是,當我嘗試在網絡瀏覽器上運行localhost/script.php時,我只是輸出「回顯」部分。

我已經嘗試過:從php.ini中的禁用功能

  1. 刪除 'EXEC()';
  2. 爲此路徑上的每個文件夾中的所有人授予從「/」到localhost文件夾的權限;

它有什麼想法?

+0

阿帕奇可能使用不同的php.ini到CLI。你有沒有檢查Apache的php.ini? –

回答

0

你已經說了,你可以在你的php.ini配置外殼的功能,但它似乎它不工作尚未...所以也許:

  • 你沒有重新啓動Web服務器服務後,改變
  • 你在其他地方有更多的限制...也許ini_set在您的PHP文件。

作爲提醒,確保你在你的php.ini文件做得很好,檢查是否有這種說法:

disable_functions=exec,passthru,shell_exec 

也許你可以嘗試,而不是EXEC其他類似PHP函數如shell_exec來檢查它是否工作。或者,也許正在工作,沒有展示任何東西

0

簡單的解決方案:exec()返回一個字符串,但你也必須把它輸出給用戶:

<?php 
    echo "It's working"; 
    echo exec("/var/www/html/switch_audio.sh"); 
?>