-1

exec() を呼び出して C++ プログラムを実行する PHP スクリプトがありますが、ブラウザーから呼び出すと機能しません。代わりに、コマンドライン「php5 ./mypage.php」を使用すると機能します。

これは私のPHPページです:

<?php exec("./praat ./FeaturesExtraction.praat ./emotion.wav ./output/"); ?>

Praat は、音声を分析するプログラムです。このプログラムは、スクリプト FeaturesExtraction.praat と wav 感情.wav を入力として受け取り、出力をディレクトリ "output" (すべての権限を持つ) に書き込みます。

Apache と Lighttpd の 2 つの Web サーバーをテストしましたが、結果はありません。

誰かが私を助けることができますか?どうすればこの問題を解決できますか? または、どのように praat をラップして Web から使用できますか?

ありがとう。

4

2 に答える 2

0

問題は「./praat」である可能性があります。実行可能ファイルへのフル パスを使用するか、chdir() に相当する php を適切なディレクトリに対して実行してみてください。

于 2013-01-11T19:37:31.583 に答える
0

別のテストの後、これが私の結論です。パーミッションの問題を解決したので、単純な C バイナリは機能しますが、残念ながらそうではありません。Apache ログ ファイルを確認しましたが、エラーは次のとおりです。「MelderError」のインスタンスをスローした後に終了が呼び出されました。

そこで、別の適切な質問を開きます : PHP から praat を実行中にエラーが発生しました: 'MelderError' のインスタンスをスローした後に終了が呼び出されました。

みんなありがとう。

于 2013-01-12T17:17:28.203 に答える