2016-04-19 12 views
0

phpからLinuxシェルコマンドを実行しようとしていますが、Webページに出力がありません。私がLinuxのcosoleからphpページを実行しようとしているなら、うまく動作します。Webページに出力がありませんシェルコマンド実行中のPHP

PHPコード:コードの上

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

は、Webページ上の任意の出力を与えていません。しかし、Linux上では、コンソールを起動します。例えば

[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として提供していません。あなたのテストは役に立たない。ほとんどの場合、プログラムを実行する不十分なアクセス許可または不完全な$PATHasteriskの場所を指していないという2つの一般的な理由の1つで失敗する可能性があります。

0

私はマルチンに同意するものとします。

私はあなたがそれらのコマンドを実行し、(テキストやデータベースなど)いくつかのストレージにつながる置くためのスクリプトを書くことをお勧め。ルートにそれを実行するためにcronを使用します。そして、あなたがデータを読み込みますWebページ上のストレージから

リアルタイム応答が必要な場合は、すべてのtそれはサーバーリソースを消費しますが。それはあなたが考慮する必要があるトレードオフです。それはあなたがウェブサイトから達成したいものに依存します。

0

thoesコマンドをrootまたはAsteriskユーザーとして実行するには、sudoを使用します。特定のコマンドだけにパスワードなしで実行できるようにsudoを設定することができます。

0

チェックdisable_functionsphp.ini。 MbがちょうどWebサーバーのオフ

1

アスタリスク制御ソケットの権限も /etc/asterisk.conf に容易に変更することができもしくはshell_exec:

[files] 
astctlpermissions = 0660 
astctlowner = root 
astctlgroup = apache 
astctl = asterisk.ctl 
関連する問題