";wkhtmltopdf二进制文件未找到或不可执行“;尽管路径在CentOS服务器上是正确的


"wkhtmltopdf binary is not found or not executable" although path is correct on CentOS server

我正在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/ww/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使二进制文件工作。但是,如果我没有将./放在它之前,我仍然会收到错误。

确保wkhtmlto*文件设置为可执行文件。考虑到如果在文档根目录中定位文件(而不是操作系统bin实用程序的一部分),Stix会起作用。

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

open_basedir=/usr/bin/

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

我没有使用cakepp,但查看以下消息:

open_basedir restriction in effect

我认为它测试了wkhtmltopdf二进制文件是否存在,因为open_basedir不允许它,所以它失败了,并给你"wkhtmltopdfbinary is not found or not executed:/usr/bin/wkhtmltopdf"错误。尝试更改open_basedir以允许脚本访问/usr/bin/wkhtmltopdf

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