私は現在、WKHTMLTOPDFコマンドラインアプリを使用してPDFドキュメントを生成するクラスをPHPで構築しています。
これを行うために、shell_execの呼び出しを使用してWKHTMLTOPDF実行可能ファイルを呼び出しています。ただし、この特定の呼び出しは実行されていないようです。ほぼ瞬時にNULLを返します。
私が行った小さなテストでは、次の結果が得られました。
var_dump(shell_exec('ping nu.nl'));
// This prints a string, containting the expected output of the ping command
var_dump(shell_exec('"c:/wkhtmltopdf/wkhtmltopdf.exe" --orientation "Landscape" --page-size "A2" --margin-top "25mm" --margin-left "20mm" --margin-bottom "20mm" --margin-right "20mm" "http://www.nu.nl/" "C:/Temp/1280310218.pdf"'));
// This prints NULL
したがって、shell_exec()
動作しているようで、オフになっていsafe_mode
ます。コマンド全体をcmd.exeに貼り付けると、コマンドが正しく実行されます。
問題が上記のいずれにも当てはまらない場合(セーフモード、コマンドの誤り、またはshell_exec()
それ自体)、他に何ができるでしょうか。私が考えることができるのはユーザー権限の問題だけですが、実行可能ファイルとそれが含まれるディレクトリの両方に、システム上のすべてのユーザーグループのフルアクセス設定があります。
(注:私はWindowsマシンで開発していますが、このコードは本番環境のLinuxサーバーで実行されます。したがって、もちろんこの問題自体が関連していることが判明しない限り、Windowsのみのソリューションは私が探しているものではありません。 Windowsへ)