0

私はこの問題に数時間苦労しており、Program Files ディレクトリ内のファイルに対して PHP の shell_cmd() 関数を実行するために構文を適切にエスケープする方法がまったくわかりません。

これが私の現在のコードです:

$send_cmd="\C:\imagemagick\convert\" \"c:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\med_forms\\pdf\\tmppdf\\f-$time\\mf_pdf-$time-$file_num.html c:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\med_forms\\pdf\\tmppdf\\f-$time\\mf_pdf-$time-$file_num.pdf\"";

echo shell_exec($send_cmd);

次のようなコマンドを実行しようとしています。

 shell_cmd("C:\imagemagick\convert C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\med_forms\test.html C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\med_forms\test.pdf");

PHP にはすべての適切なフォルダー権限があり、このコマンドは、スペースのないフォルダー構造を処理する場合に問題なく機能します。コマンドを実行するために、「Program Files」フォルダ構造内のスペースを適切にエスケープするにはどうすればよいですか?

スペース、ダブル バック スラッシュ (\)、そして "\" に %20 を使用してみました。どこが間違っていますか?どんな入力でも大歓迎です。

4

1 に答える 1

0

あなたのコードに基づいて、以下の提案または変更が実装されていることがわかりました

  1. Imagemagick を環境パス変数に入れ、コマンドプロンプトからも実行できることを確認する

  2. スクリプトで imagemagick のパスを指定する代わりに、"convert" のみを記述します。

  3. Windows の「shell_cmd」の代わりにコマンド「exec」を実行してみてください [多くの場合、shell_cmd は Windows サーバーで実行されません]

また、WAMP サーバーまたはプロジェクト フォルダーに基づいて、html および pdf のパスを変更します。

これがあなたを助けるかもしれません.... :)

于 2013-01-30T08:10:55.190 に答える