0

私は、これまでになく頻繁に実行され、写真を処理するバックエンドバッチ/CRONジョブを備えたPHPWebサイトを持っています。WebサーバーとデータベースサーバーおよびRAIDストレージはFedora14ボックスであり、写真ソフトウェアはストレージサーバー上のWindows7VirtualBoxで実行されます。

ストレージアレイは共有フォルダとしてロードされ、[ネットワークの場所]の下にE:\として表示されます。

PHP execコマンドは、PHP-CLIを介して毎分実行されます。次のようになります。

exec("C:\\service\\photo_edit.exe --input-file E:\\photos\\photo_example.jpg --effect crossprocess --output-file E:\\photos\\user\\finished_example.jpg")

コマンドラインで直接コマンドを実行すると機能します。つまり、コマンドプロンプトからアクセスできたとしても、PHPはE:\をまったく使用していないようです。また、ファイルを編集してLinuxで実行するサービスが他にもあるため、WindowsをVirtualBoxに保持する必要があります。

Windows内のWebストレージでこれらのファイルを処理できるようにするには、PHPが必要です。

4

2 に答える 2

1

権限の問題ではありません。ドライブ文字にマップされたネットワーク共有は、ユーザーごとの設定です。ユーザーApacheは、その共有がとしてマップされていないので実行されE:ます。

代替案は次のとおりです。

  1. UNC構文を使用します。\\vboxsvr\whatever
  2. 現在のApacheユーザーのドライブをマップします(LOCAL_SYSTEM?)—可能ではないようです
  3. Apacheサービスを実行するユーザーを変更します
于 2013-02-05T15:32:24.860 に答える
0

PHPにはアクセスする権限がありますE:\か?コマンドを実行するときは、おそらく管理者であることを覚えておいてください。一方、PHPは、より低い権限で実行されている可能性があります。

于 2013-02-05T15:28:48.127 に答える