首先,命令行在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中无法执行。。各位大佬支支招
因为你 web 访问时 php 使用的用户和 ,你在 ssh 中用户不一样。所使用的环境变量权限都不一样。
解决方案
1、使用当前用户创建一个队列,去执行。
2、使用 ssh 切换到你 PHP 所在的用户组,执行对应的命令进行调试,调试到成功为止。