Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;wkhtmltopdf二进制文件未找到或不可执行;尽管CentOS服务器上的路径正确_Php_Cakephp_Centos_Wkhtmltopdf - Fatal编程技术网

Php &引用;wkhtmltopdf二进制文件未找到或不可执行;尽管CentOS服务器上的路径正确

Php &引用;wkhtmltopdf二进制文件未找到或不可执行;尽管CentOS服务器上的路径正确,php,cakephp,centos,wkhtmltopdf,Php,Cakephp,Centos,Wkhtmltopdf,我正在用CakePHP构建一个web应用程序,并使用CakePdf插件和wkhtmltopdf二进制文件将PDF打印功能集成到该应用程序中 我在本地机器上做了大量的测试,代码可以正常工作并按预期打印PDF。但是,当我将应用程序上载到我的生产web服务器时,我会收到以下消息: 警告(2):是否为可执行文件()[http://php.net/function.is-executable]: open_basedir限制生效。文件(/usr/bin/wkhtmltopdf)不可用 在允许的路径内: (

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

我在本地机器上做了大量的测试,代码可以正常工作并按预期打印PDF。但是,当我将应用程序上载到我的生产web服务器时,我会收到以下消息:

警告(2):是否为可执行文件()[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
,收到错误“command not found”。结果证明二进制文件已损坏。因此,我上传了一个新版本的二进制文件,并使用
/wkhtmltopdf
二进制文件工作。但是,如果我没有将
/
放在它前面,我仍然会收到错误。

我没有使用cakephp,但看到以下消息:

open_basedir restriction in effect

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

确保wkhtmlto*文件设置为可执行文件。如果将文件定位在您的文档根目录中(而不是OS-bin实用程序的一部分),Stix就可以工作了

youre
open\u basedir
设置无效的可能原因是,可能会限制它在PHP文件中更改,而不是在PHP.ini中设置:

open_basedir=/usr/bin/

请参见

如果您的路径正确,则您需要从下载最新版本的并将其替换。

我已更新了答案以反映此更改,但仍然无效。