2017-07-03 9 views
0

私はPHPスクリプトで次のように発行したときに、私は成功した出力を取得しています:PHPのexecが戻り、ない他人

$peers_summary = exec('sudo asterisk -x "sip show peers"', $sip_peers); 

$sip_peersはリスト、EXECコマンドの完全な出力が含まれていますアスタリスクが提供する標準的なテーブル形式のピアです。

$test = exec('sudo asterisk -x "sip show peer trunk-to-pbx"', $trunk); 

$trunkが完全に空である:しかし、ときに私が発行array(0) {}、および $testは空の文字列です:string(0) ""

trunk-to-pbxが私のアスタリスクのインストールで有効なピアである、と私は発行することを確認しましたsudo asterisk -x "sip show peer trunk-to-pbx"のプロンプトが成功した場合(sudo asterisk -x "sip show peers")、なぜ2番目のコマンドがexec()から空を返すのかわかりません。私は当初、それは出力文字の制限かもしれないと思ったが、出力は2,000文字未満であった - メモリまたは限界の問題ではない。私はset_time_limit(0)を試しましたが、プロンプトで実行が事実上瞬間的です。

第2のexec()が空に戻るのはなぜですか?

+0

$ testの値は? –

+0

お返事ありがとうございます。 '$ test'も出力の最後の行でなければなりません。 –

+1

exec()に3番目のパラメータを追加し、その値が何であるか検査する価値があります。 –

答えて

0

exec()またはasteriskで問題が発生していなかったか、コマンドがexec()に渡っていました。 sudoersというファイルがあり、exec()が動作する前にコマンドをホワイトリストに登録する必要があります。継承されたコードベース。ありがとうクリスStryczynski、あなたの提案のために。