2

我正在使用 CakePHP 构建一个 Web 应用程序,并使用 CakePdf 插件以及使用 wkhtmltopdf 二进制文件将 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 正在做一些事情。

您的设置没有影响的可能原因open_basedir是,它可能被限制在 PHP 文件中更改它,而是在您的 php.ini 中设置:

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 回答