2

私はCakePHPでWebアプリを構築しており、wkhtmltopdfバイナリを使用するとともに、CakePdfプラグインを使用してPDF印刷機能を統合しました。

ローカルマシンで広範なテストを実行しましたが、コードは意図したとおりに機能し、PDFを印刷します。ただし、アプリを本番Webサーバーにアップロードすると、次のメッセージが表示されます。

警告(2):is_executable()[http://php.net/function.is-executable]:open_basedir制限が有効です。ファイル(/ usr / bin / wkhtmltopdf)が許可されたパス内にありません:(/ var / www / clients / client1 / web1 / web:/ var / www / clients / client1 / web1 / tmp:/ var / www /gravex.co.uk/web:/srv/www/gravex.co.uk/web:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin )[APP / Plugin / CakePdf / Pdf / Engine / WkHtmlToPdfEngine.php、82行目]

wkhtmltopdfバイナリが見つからないか、実行可能ではありません:/ usr / bin / wkhtmltopdf

エラー:内部エラーが発生しました。スタックトレース

APP/Plugin/CakePdf/Pdf/Engine/WkHtmlToPdfEngine.php line 29 → WkHtmlToPdfEngine->_getCommand()
APP/Plugin/CakePdf/Pdf/CakePdf.php line 234 → WkHtmlToPdfEngine->output()
APP/Plugin/CakePdf/View/PdfView.php line 101 → CakePdf->output(string)
CORE/Cake/Controller/Controller.php line 957 → PdfView->render(null, null)
CORE/Cake/Routing/Dispatcher.php line 193 → Controller->render()
CORE/Cake/Routing/Dispatcher.php line 161 → Dispatcher->_invoke(UsersController, CakeRequest, CakeResponse)
APP/webroot/index.php line 96 → Dispatcher->dispatch(CakeRequest, CakeResponse)

CakePdfプラグインがwkhtmltopdfをロードするために使用するファイルを確認しました。そのパスは/usr/bin/wkhtmltopdf、ローカルマシン上にあるものと同じです。wkhtmltopdfが同じ場所にあるかどうかを確認しました。wkhtmltopdfをインストールするとき、私は単にバイナリを抽出し、ローカルマシンと本番マシンの両方の上記の場所に配置しました。

これを修正するにはどうすればよいですか?

更新
stixのアドバイスに従って、open_basedirへのパスを追加しましたが、それでもこのエラーが発生します。その後、ターミナルで実行しようとしwkhtmltopdfましたが、「コマンドが見つかりません」というエラーが表示されました。これは、バイナリファイルが破損していることが判明しました。それで、私はバイナリの新しいバージョンをアップロードし、バイナリを使用し./wkhtmltopdfて動作します。ただし、前に付けない./と、エラーが発生します。

4

3 に答える 3

2

wkhtmlto*ファイルが実行可能に設定されていることを確認してください。OS binユーティリティの一部ではなく、ドキュメントルート内にファイルを配置する場合に機能するという事実を考えると、Stixは何かに取り組んでいます。

youre設定に影響がない場合の考えられる原因はopen_basedir、php.iniで設定する代わりに、PHPファイル内での変更が制限されている可能性があることです。

open_basedir=/usr/bin/

http://www.php.net/manual/en/ini.core.php#ini.open-basedirを参照してください

于 2012-08-29T08:25:25.473 に答える
0

私はcakephpを使用していませんが、このメッセージを見てください:

open_basedir restriction in effect

wkhtmltopdfバイナリが存在するかどうかをテストし、open_basedirがそれを許可していないため、失敗し、「wkhtmltopdfバイナリが見つからないか、実行可能ではありません:/ usr / bin/wkhtmltopdf」エラーが発生すると思います。open_basedirを変更して、スクリプトが/ usr / bin/wkhtmltopdfにアクセスできるようにしてください。

于 2012-08-29T01:40:28.313 に答える
0

パスが正しい場合は、https://wkhtmltopdf.org/から最新バージョンをダウンロードして置き換える必要があります。

于 2018-12-18T05:54:43.203 に答える