当前位置: 首页 > 知识库问答 >
问题:

无法在php中通过exec()函数运行wkhtmltopdf commad,但同一命令可在命令行上运行

叶桐
2023-03-14

我使用wkhtmltopdf从html生成pdf,我试图通过PHP exec()函数运行下面的命令,但它不生成pdf,我没有显示任何错误,虽然。但是当我通过命令行运行相同的命令时,它就工作了。

下面是我用来执行pdf生成命令的PHP代码taht。

$command = "wkhtmltopdf -s A4 /inputhtmlfilepath/test.html /outputfilepath/output.pdf";
exec($command);

有关我的设置的一些信息:

操作系统-Ubuntu 12.04

PHP版本

任何帮助将不胜感激,谢谢。

共有1个答案

宋航
2023-03-14

如果你得到'无法连接到X服务器错误'然后请尝试这个。

1.安装xvfb包

 sudo apt-get install xvfb

2.创建一个名为“wkhtmltopdf”的文件。sh'并向其添加以下代码并保存

xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"

3.然后将此文件移动到 /usr/local/bin并授予权限

sudo chmod 555 /usr/local/bin/wkhtmltopdf.sh

4.然后尝试通过运行命令创建pdf。

/usr/local/bin/wkhtmltopdf.sh input.html output.pdf
 类似资料:
  • 我遇到了麻烦,对php shell_exec命令感到非常困惑。当命令由PHP执行时,我没有错误,但执行失败。如果我从终端使用完全相同的命令,它就会工作。 命令如下: 当我从终端发来这个: 但是从我的php脚本: 我已经测试了shell_exec的输出,它是空的。 日志: /tmp目录中没有权限pb: 我尝试了avec PHP exec()函数来获取错误信息,我只是在return_var中得到一个“

  • myStr是上面我要执行的整个命令吗? 我已经尝试过的事情: 给了我一个错误: 它运行起来像一个魅力,但不是通过runtime.exec()。

  • 问题内容: 尝试使用程序包运行命令时出现错误。 这是我要执行的操作的一个示例: err返回以下内容 输出返回此 当我更改此行时,实际上可以使脚本工作: 到以下内容: 该命令可以正常运行并成功移动文件,但无法使用通配符。在命令中似乎没有将星号用作通配符。这是为什么?还有其他在GO中使用通配符的方法吗?如果没有,那么我将如何将所有文件从递归移动到? 谢谢 问题答案: 在外壳程序上键入命令时,外壳程序将

  • 问题内容: 我在弄清楚如何使用os / exec包运行多个命令时遇到了麻烦。我已经摸索了网络和stackoverflow,还没有找到任何适合我的案例。这是我的资料来源: 我想要命令,就像从终端一样。 因此,我需要依次运行每个命令,并等待最后一个命令完成后再继续。在当前版本的代码中,当前假设是因为执行cd path并在新的shell中执行了./configure,而不是与上一个命令位于同一目录中。有

  • 我有一个工作的外壳脚本,使用Kilall杀死程序的所有实例,如下所示: 基尔abc 现在,我编写了一个php网页,使用shell_exec函数执行此脚本: shell_exec('sh./myscript.sh'); 问题是,我的PHP代码在命令行上正确地使用"phpmyscript.php",但在浏览器中不起作用!。然而,我知道命令行中的用户是root,而php中的用户是apache(我用who

  • 问题内容: 我有一个文件,其中我必须替换所有单词,如$ xyz,对于它们,我必须替换为以下内容: 这个文件也有一些像$ {abcd}这样的词,我不必更改。我正在使用此命令 sed -i’s?\ $([A-Z _] +)?\ $ {\ 1}?g’文件 它可以在命令行上正常工作,但不能在perl脚本中作为 ; 我想念什么?我认为添加一些反斜杠会有所帮助。我尝试添加一些但没有成功。 谢谢 问题答案: 在