2017-05-21 16 views
0

PHPで本当に簡単なことをしようとしています。 Webサーバー(Apache with WAMP)から呼び出されるPHPスクリプトから外部のbatファイルを実行したい。手動で実行batファイルPHPのbatでcopyコマンドを実行できません

echo %PATH% > C:\project\mypath.txt 
cp D:\books\Ant\1.pdf D:\books\Ant\2.pdf 

savereport.batという名前のbatファイルの内容が正常に動作しているに続き、それはCでmypath.txtを作成します:\プロジェクトディレクトリと1.pdfが正しく2.pdfにコピーされます。

しかし、system()でPHPから同じbatファイルを実行すると、最初の文だけが完了します。つまり、C:\ project \ mypath.txtを作成しますが、奇妙なことに1.pdfをコピーしません。 2.pdf。

これは私が

<?php 
system('C:\wamp\www\savereport.bat'); 
?> 

を使用していPHPコードであるIはまた、すべての場合のexec()、パススルー、同じ結果を試みました。助けてください。

+1

私は 'cp'はネイティブウィンドウコマンドではないと思います。それがあなたのWindowsインストールに追加したものであれば、PHPのsystem()呼び出しはおそらくPATHでそれを見つけることができませんでした。あなたは 'コピー'コマンドを試しましたか? –

答えて

0

cpは、Windowsコマンドではありません。おそらくPowershellエイリアスです。cpcopyに置き換えてください。

+0

はい、私はgit bashとcygwinがインストールされていたので、手動で実行するとcpが認識されてしまいます。なぜなら、Apacheサーバーは別のユーザーで実行されていたからです。したがって、cpに固有のPATH情報は利用できませんでした。 'cp'が内部コマンドまたは外部コマンドとして認識されない、 操作可能なプログラムまたはバッチファイルです。 – Abhishek

+0

OK、コマンドを 'cp'から' copy'に変更して再チェックしましたか? – Rabin

+0

はい、それは働いた:)私は例としてCPを試みていた、PATH情報の利用不可能を実現した後、私は実行したいexeの完全な絶対パスを提供した。これはwkhtmltopdfなので、新しいコードは今や exec "C:\\ Program Files \\ wkhtmltopdf.exe")。それは今働きます! – Abhishek

関連する問題