2012-05-02 6 views
0

PHPのshell_execスクリプトを使用してlame encoderを実行する際に問題があります。php shell_execのLame encoderコマンドがhttpサーバ経由で動作しない

私の問題はこのスクリプトだけに壊れて、ターミナルでphpコマンドを実行するとスクリプトが動作することに気付きましたが、ブラウザで開くと動作しません。 すべてのファイルのpermissiosを777に設定しました。

はここの事は、私はPHPのコマンドを使用して、ターミナルでそれを実行した場合、そのスクリプトが動作するコード

< ?php 

exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg'); 

だが、ブラウザを経由していません。

ああ、このscirptは実際には最大2秒かかっているので、タイムアウトなどはありません。私はまた、PHPやnginxのエラーを取得します。

どうすればこの問題を解決できますか?

+0

PHPをnginxで実行しているときに 'exec'が無効になっている可能性があります。それを有効にする方法を頭の上から覚えていない(一般に、それが無効にする必要があるセキュリティホールです)。少なくともgoogleに何かを与える必要があります... – Endophage

+0

コマンドはエラーを返しますか? – jarchuleta

+0

いいえ、最初のスクリプトでは、うまくいくようないくつかのshell_execコマンドを実行しています。このスクリプトで停止するスクリプト –

答えて

2

は、PHPの実行PATHにラメですか? lame/usr/bin/lameなどに置き換えてください。

ファイル引数の相対パス名はどうですか? ../furniture/などは、PHPに見られるように現在のディレクトリから正しいですか?不確かな場合は、完全パス名に置き換えて問題が解決するかどうか確認してください。

以下のように言及する価値はありません。lame自体にすべての実行可能ビットが設定されていることを確認したい場合があります。あなたがファイルを所有していて、それが所有者によってのみ実行可能な場合、apacheはそれを実行することができません。

+0

/usr/local/bin/lameを使用しています。ありがとうございました。 –

0

Webサーバーからは機能しない理由は多分あるかもしれませんが、おそらくリソースやアクセス許可に関連しています。あなたは、execの2番目のオプションのパラメータを使用してこれを見つけることができます。

<?php 
$output = ""; 
exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg',$output); 
echo $output; 
?> 
関連する問題