wkhtmltopdf在PHP中执行的问题

新手上路,请多包涵

首先,命令行在linux中执行是没有问题的,但是搬到php中执行就出现问题咯

public function test() {
    $shell ='xvfb-run --server-args=\"-screen 0, 1024x768x24\" wkhtmltopdf http://www.baidu.com /tmp/baidu.pdf  2>&1';
    dump(mb_convert_encoding(shell_exec($shell), "UTF-8", "GBK"));die;
}

上面一段打印出来:string(69) "which: no xauth in ((null))xvfb-run: error: xauth command not found"

然后百度搜了一波找到一个唯一的解决方案
http://www.itkeyword.com/doc/...

但是我尝试之后

public function test() {
    $shell ='/usr/bin/wkhtmltopdf http://www.baidu.com /tmp/baidu.pdf  2>&1';
    dump(mb_convert_encoding(shell_exec($shell), "UTF-8", "GBK"));die;
}

打印结果是:string(41) "wkhtmltopdf: cannot connect to X server"

第一个shell命令在linux中是可以执行的,但是在PHP中无法执行。。各位大佬支支招

阅读 3.8k
2 个回答

因为你 web 访问时 php 使用的用户和 ,你在 ssh 中用户不一样。所使用的环境变量权限都不一样。

解决方案

1、使用当前用户创建一个队列,去执行。
2、使用 ssh 切换到你 PHP 所在的用户组,执行对应的命令进行调试,调试到成功为止。

  # nginx 适用
  $ su www-data -s /bin/bash
新手上路,请多包涵

主要的功能是html转pdf

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏