2012-06-26 18 views
5

phpを使用してコマンドラインでコマンドを正しく実行するにはどうすればよいですか?たとえば、私は、PDFファイルにDOCXファイルを変換するには、コマンドラインで以下のコマンドを使用しています:PHPを使用してcmdコマンドを実行する

今PHPコードを使用して
pdfcreator.exe /PF"D:\Documents\sample.docx 

私は同じコマンドを実行できるようにしたいが、何も起こっているように見えるん:

<?php 
shell_exec('pdfcreator.exe /PF"D:\Documents\sample.docx"'); 
?> 

もしこれが可能なら、どうすればいいですか?

+0

###更新ログにエラーが発生しましたか? 'shell_exec'呼び出しを' var_export'でラップするとどうなりますか? ### Original代わりに 'system()'を試しましたか?ここにドキュメントがあります:http://www.php.net/manual/en/function.system.php。 –

+0

私はシステム上でコマンドを実行するためのシステムと他のすべての機能を試しました(exec、shell_exec、システム、pcntl_exec、パススルー) –

+0

私はdownvoted whoではない、あなたの答えは大歓迎です。 –

答えて

8
system("c:\\path\\to\\pdfcreator.exe /PF\"D:\\Documents\\sample.docx""); 

これを試してください。

+0

実行可能ファイルへのパスを環境変数に含める場合は、そのパスを含める必要がありますか? –

+0

私は確かではありませんが、安全はすべての道を通ります。 –

+0

私は文法上のエラーが出るので、あなたが提供したコードに基づいてこれを変更しました:system( 'C:\\ Program Files \\ PDFCreator \\ pdfcreator.exe/PF \ "D:\\ Documents \\ sample.docx "'); でもまだ運がありません。 –

4

escapeshellcmd()でコマンドをエスケープすることを忘れないでください。これにより、醜いバックスラッシュやエスケープ文字を使用する必要がなくなります。

動作する可能性があり、他の選択肢もあります。

`command` // back ticks drop you out of PHP mode into shell 
exec('command', $output); // exec will allow you to capture the return of a command as reference 
shell_exec('command'); // will return the output to a variable 
system(); //as seen above. 

はあなたの.exeファイルがあなたの$ PATH変数に含まれていることを確認し、また。そうでない場合は、コマンドの絶対パスを含めます。

+0

答えに基づいて以下のコードを試しましたが、それでも動作しません。 <?php $ command = escapeshellcmd( 'pdfcreator.exe/PF"D:¥Documents\sample.docx "'); '$ command'; exec($ command、$ output); shell_exec($コマンド); system(); ?> –

+0

CLIからスクリプトを実行すると何も出力されませんか? '$ command = escapeshellcmd( 'pdfcreator.exe /PF"D:\Documents\sample.docx"> C:\ outfile'); 'のようなものを試してみてください。何かがC:\ outfileに書き込まれますか? –

関連する問題