0

私のセットアップは次のとおりです。Windows 7、Apache と PHP が有効になっている XAMPP 変換を実行するために外部プログラムを呼び出す PHP スクリプトがあります。この外部プログラムは EXE ファイルであり、次の 3 つの属性が必要です。

  • ソースファイル
  • 宛先ファイル
  • 追加のフラグ (コンバージョン タイプなど)

XAMPP に組み込まれているコマンド ライン ツールを使用してスクリプトを実行すると、すべて正常に動作します。しかし、PHP スクリプトで exec() 関数を使用すると、出力ファイルが作成されません。変換が実際に行われていることは確かです (約 5 秒かかり、PHP スクリプトの実行にかかる時間とほぼ同じです)。

これはアクセス許可の問題だと思うので、既に EXE ファイルを PHP ファイルと同じフォルダーに移動し、フォルダー全体のアクセス許可を調整しました (すべてのユーザーにすべてのアクセス許可を付与しました)。また、Windows UAC を無効にして、コマンドを BAT ファイルに入れようとしました。ファイルは作成されません。

どんな助けやヒントも大歓迎です!

私のPHPコードは次のとおりです。

exec('c:\converter.exe c:\src.txt c:\dst.txt -f', $output);
print_r($output);

$output を出力すると、配列が空であることがわかります。コマンドプロンプトにまったく同じコマンドを入力すると、コードは魅力的に機能します(構文エラーはありません)。絶対パスも使用します。

4

2 に答える 2

0

ご意見をお寄せいただきありがとうございます。結局のところ、'Interactive Services Detection' 機能によって引き起こされた Windows の問題でした。Apache はシステム サービスとして実行されていたため、(GUI を使用して) 外部プログラムを呼び出すことができませんでした。XAMPP の run-as-service 機能を無効にして、問題を解決しました。より完全な説明がここにあります: http://php.net/manual/en/book.exec.php

于 2013-07-12T15:50:19.470 に答える