5

わかった、

私はいくつかの創造的な検索を行い、一種の障害にぶつかっています。

Linuxプログラム「sox」を使おうとしています。PHPスクリプトから呼び出そうとしています。コマンドラインを使用すると、スクリプトは機能します。ただし、PHP execを使用すると、機能しません。

例:

sox file1.mp3 file2.mp3 tempfile.mp3 -V3

(「V3」は詳細な出力を指定します)

コマンドラインで「ユーザーX」またはrootとして実行すると、新しいファイルを作成できます。ただし、次のようにコマンドを実行すると、次のようになります。

<?php
exec('sox file1.mp3 file2.mp3 tempfile.mp3  -V3', $output);
foreach($output as $line){
print $line;
}

新しいファイルは生成されません。さらに、コマンドの結果を返す必要のある配列は空白です。

私は簡単なテキストを作成しました

exec(ls,$output);

ルートディレクトリの内容を取得します。

PHPコマンドを使用するget_current_user()と、Webサイトのルートであるディレクトリの所有者が返されました。

しかし、linuxコマンドを使用するwhoamiと、現在の人が「apache」と見なされていることがわかりました。プログラムを使用する権利をapacheに与える必要がありますか?

私はオンラインで検索を続け、自分が間違っていることを理解するために試行錯誤を繰り返します。どんな助けでも大歓迎です。

明確化

  • セーフモードではありません(phpinfo()ページを確認しました ")
4

3 に答える 3

4

通常、これはパスの問題です。呼び出そうとしているアプリケーションは、Web サーバーのユーザー アカウントの検索パスにない可能性があります。フルパスを使用して PHP からアプリケーションを呼び出すだけです。そのパスを設定ファイルに保存して、それが使用されているどのシステムでも機能するようにします。

于 2011-01-09T20:07:23.930 に答える
2

php は、Apache を実行しているユーザーとして実行されると確信しています。これはほとんどの場合、無人 (ディレクトリを作成する権限のないユーザー) です。誰もが書き込みを許可されている場所に出力を作成し、Apache が実行されているユーザーを確認してください。

于 2011-01-09T20:05:46.823 に答える
0

現在 PHP をsafe_modeで実行しているかどうかを確認します

于 2011-01-09T20:08:17.573 に答える