2016-04-19 86 views
0

我想從PHP執行Linux shell命令但網頁上沒有輸出。如果我試圖執行從PHP COOL的PHP​​頁面,它的工作正常。在網頁PHP沒有輸出,同時執行shell命令

PHP代碼:

<?php 
    $result = shell_exec('asterisk -rx "core show channels concise"'); 
    $ccount =shell_exec('asterisk -rx "core show channels count"'); 
    echo $result; 
    echo $ccount; 
?> 

上面的代碼是不給網頁上的任何輸出。但在Linux控制檯上它的woking。例如所有的問題

[ABC @主機sysadminman]#PHP myfile.php

+3

也許apache用戶沒有權限。錯誤日誌顯示什麼? – chris85

+0

您需要在shell_exec調用中找到可執行文件路徑。例如/ usr/bin/asterisk -rw「core show channels concise」 – unixmiah

回答

0

首先是不完整的,你沒有表現出什麼期望輸出。但除此之外,你在那裏犯了一些常見的錯誤。 首先,您以root身份測試您的腳本(# php ...),但您的httpd未以root身份提供腳本。所以你的測試是沒用的。您應該切換到正確的用戶(最有可能www-data然後檢查運行從外殼腳本多半會爲兩種常見的原因之一失敗 - 沒有足夠的權限來運行asterisk程序或不完整$PATH沒有指向哪裏asterisk是地方。

0

我同意馬爾欽。

我建議你寫腳本來執行這些命令,並把結果給一些存儲(例如文本或數據庫)。使用cron以root身份運行它,然後你讀取數據從網頁上的存儲。

如果你想要實時響應,你必須運行cron所有的t ime雖然它消耗服務器資源。這是你必須考慮的折衷。它取決於你想從網站獲得什麼。

0

使用sudo以root或Asterisk用戶身份運行命令。您可以配置sudo以允許在沒有密碼的情況下僅執行特定的命令。

0

檢查disable_functionsphp.ini。 MB了shell_exec只是關閉Web服務器

1

Asterisk的控制插座的權限,也可以很容易地在改變/etc/asterisk.conf

[files] 
astctlpermissions = 0660 
astctlowner = root 
astctlgroup = apache 
astctl = asterisk.ctl