“虽然路径在CentOS服务器上是正确的,但找不到wkhtmltopdf二进制文件或不可执行文件”

时间:2012-08-29 00:17:26

标签: php cakephp centos wkhtmltopdf

我正在使用CakePHP构建一个Web应用程序,并使用CakePdf插件将PDF打印功能集成到一起,并使用wkhtmltopdf二进制文件。

我已在本地计算机上进行了大量测试,代码可以正常工作并打印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 /网络:在/ usr /共享/ PHP5:/ tmp目录:在/ usr /共享/ phpMyAdmin的:在/ etc / phpMyAdmin的:在/ var / lib中/ phpMyAdmin的)   [APP / Plugin / CakePdf / Pdf / Engine / WkHtmlToPdfEngine.php,第82行]

     

找不到wkhtmltopdf二进制文件或不可执行文件:   的/ usr /斌/ 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二进制文件。但是,如果我没有将./放在它之前,我仍然会收到错误。

3 个答案:

答案 0 :(得分:2)

确保将wkhtmlto *文件设置为可执行文件。鉴于它可以在文档根目录中定位文件 - 而不是操作系统bin实用程序的一部分 - 它可以解决问题。

open_basedir设置无效的可能原因是,可能会限制在PHP文件中更改它,而是在php.ini中设置:

open_basedir=/usr/bin/

请参阅http://www.php.net/manual/en/ini.core.php#ini.open-basedir

答案 1 :(得分:0)

我没有使用cakephp,但请看这条消息:

open_basedir restriction in effect

我认为它测试wkhtmltopdf二进制是否存在并且因为open_basedir不允许它,所以它失败并且给你“找不到wkhtmltopdf二进制文件或者不可执行文件:/ usr / bin / wkhtmltopdf”错误。尝试更改open_basedir以允许脚本访问/ usr / bin / wkhtmltopdf

答案 2 :(得分:0)

如果您的路径正确,则需要从https://wkhtmltopdf.org/下载最新版本并替换。