PHP Windowsでexec
2005年12月13日
http://www.s-m-l.org
Suns & Moon Laboratory
Windowsでsystem,execコマンドが動作しない
正確に言うと、コマンドは実行しているのに、その後の処理が停止?という感じでしょうか?
システム構成
- WindowsXP+SP2
- Apache2.0.52
- PHP4.3.9
回答
答えは↓にありました。
PHP: exec - Manual:のUser Contributed Notesよりまるまるっと引用
tr4nc3 at msn dot com
22-Feb-2004 08:43
I almost gave up trying to get Windows XP w/ Apache 2 to use either system(), or exec() to run a batch file.
If the batch file was this...
echo test > test.txt
it would work fine, creating test.txt...
but if the batch file was..
iexplore.exe "http://www.ibm.com"
I would get nothing. After hours and hours of messing around with this I figured it must be some type of permission problem. (dugh!)
Long story a little shorter.. You have to give Apache permission to "interact with the desktop".
Here's how...
Start>Run>services.msc
Right click "Apache...", select properties.
Click on the "LOG ON" tab
Check the box "Allow this service to interact with desktop"
Click OK
Restart Apache
Works great!
:D
HOPE THIS HELPS SOMEONE!
Too bad I didn't find a post like this before I figured it out myself. (I could have been working on something.)
いやーほんと、助かりました。見知らぬ人に感謝。
おまけ画像
つづく
これで解決と思いましたが、実は駄目かも
システムの組み込みコマンドは良いのですが、外部コマンドを実行すると駄目っぽいです。実行権辺りも怪しいのですが、わかりませんでした。
コマンドを実行すると、コマンドプロンプト?が表示されて、そのウィンドウを閉じると、プログラムの実行が再開します。
うーむ。とりあえず本サーバはLinuxなので、今回はこれで良しとしておきましょう。良くないけど。
追記 2005/12/13
久しぶりに試したところ問題無く動きました。「デスクトップとの対話サービスに許可」はオフでも動きました。
構成は下記です。
- WindowsXP+SP2
- Apache2.0.53
- PHP4.3.10
うーむ。当時のマシンはディスククラッシュしているので再現できませんが、とりあえず今は大丈夫になったという事でしょうか。
ためしに使ったソースファイル一式 php_exec_test_files.zip