gpt4 book ai didi

php - 无法通过 php 中的 shell_exec() 函数运行 wkhtmltopdf 命令,但相同的命令在命令行上有效

转载 作者:行者123 更新时间:2023-12-04 14:02:44 24 4
gpt4 key购买 nike

我有麻烦了,对 php shell_exec 命令非常困惑。当命令由 PHP 执行时,我没有错误,但执行失败。如果我从终端使用完全相同的命令,它就可以工作。

命令如下:

/usr/bin/wkhtmltopdf --lowquality --dpi 300 --encoding utf-8 "/tmp/knplabs_snappyxa9otq.html" "/tmp/knplabs_snappyv3pD7h.pdf"

当我从终端启动时:

$ /usr/bin/wkhtmltopdf --lowquality --dpi 300 --encoding utf-8 "/tmp/knplabs_snappyWG9XTd.html" "/tmp/knplabs_snappyv3pD7h.pdf"
Loading page (1/2)
Printing pages (2/2)
Done

但是从我的 php 脚本:

// Construct the previous command
$command = $this->buildCommand($url, $path);
../..
shell_exec($command);
../..
$content = file_get_contents($path);
../..

我测试了 shell_exec 的输出,它是空的。

日志:

Warning: file_get_contents(/tmp/knplabs_snappyv3pD7h.pdf): failed to open stream: No such file or directory in /*****/lib/snappy/SnappyMedia.class.php on line 64

/tmp 目录中没有权限 pb :

$ ls -la /tmp
total 448
drwxrwxrwt 16 root root 4096 mars 12 21:51 .
../..

我试过 avec PHP exec() 函数来获取错误信息,我只是在 return_var 中得到一个“1”错误代码,而在输出中什么也没有。

有关信息,此问题出现在我的测试服务器、我的台式电脑上,但没有出现在我的笔记本电脑上。所有 3 个都具有相同的 PHP、Apache、Mysql 版本。什么都不懂……

感谢您的帮助,我正在失去理智。大卫。

最佳答案

我在这里找到了解决方案:Executing wkhtmltopdf from PHP fails

感谢 Krzychu。

首先要从shell_exec 命令中获取信息,请在命令末尾添加“2>&1”。通过这种方式,您将获得命令返回的信息:

$no_output = shell_exec($command);
echo $no_output; // nothing

$output = shell_exec($command . ' 2>&1');
echo $output; // in my case : "cannot connect to X server"

解决方案:

  1. 不使用 wkhtmltopdf ubuntu包(0.9.9-4)

  2. 使用来自 Wkhtmltopdf download page 的官方包

所以不需要安装 xvfb !(我已经多次看到这个建议)

关于php - 无法通过 php 中的 shell_exec() 函数运行 wkhtmltopdf 命令,但相同的命令在命令行上有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com