1

私は現在、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へ)

4

3 に答える 3

1

一時ディレクトリでfopen()を使用してファイルを作成し、権限を確認します。PDFを作成しますか?たぶん、このプログラムはstdoutに出力されませんが、たとえばffmpegと同じstderrです。コマンドの後に「2>&1」を追加してみてください。

または、このソフトウェアは、がインストールされているディレクトリ内のいくつかのファイルを使用します。最初に「cdc:\wkhtmltopdf;YOUR_COMMAND」のようなものを追加してディレクトリを変更してみてください

于 2010-07-28T10:17:38.417 に答える
0

これを行うには、phpライブラリを使用できます。これにより、より効率的で統合されます。たとえば、html2pdfがあります。

于 2010-07-28T10:14:39.360 に答える
-1

これらの環境変数設定を削除します>>

"DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"

#export DYLD_LIBRARY_PATH

そしてそれは動作するはずです。

于 2012-09-11T02:54:58.117 に答える