小小学生 发表于 2021-9-27 09:05

PHP中HTML转换PDF失败问题

本帖最后由 小小学生 于 2021-9-27 14:05 编辑

感谢大佬们的回答,我把目录又设置了权限,就可以了,在最后一层我分享了我的代码,大家可以参考
之所以会提示系统目录错误是个乌龙,我把线上域名写成了本地域名,导致线上修改的任何操作都和本地无关。大无语事件。
再次感谢大家。

https://static.52pojie.cn/static/image/hrline/1.gif

我是使用wkhtmltopdf,是这样操作的
wget http://download.gna.org/wkhtmlto ... eneric-amd64.tar.xz
解压
tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
复制到目录
cp wkhtmltox/bin/wkhtmltopdf /usr/bin/
就可以在linux上运行,并且也成功了
wkhtmltopdf https://www.baidu.com baidu.pdf
但是在php上运行,却生成不出来pdf文件
使用的是shell_exec(wkhtmltopdf https://www.baidu.com baidu.pdf)
这个函数我已经解禁了,并且其他的命令也可以运行成功,比如shell_exec(curl https://www.baidu.com)
有大神知道这是什么原因吗?我需要怎么做才可以成功生成呢

张筱家 发表于 2021-9-27 09:44

或许是php-fpm的用户没有权限去执行,你可以直接将wkhtmltox/bin/wkhtmltopdf 路径写上并补全试试看

php01 发表于 2021-9-27 09:46

应该是权限问题。你看一下有没有报错信息,报错信息贴出来

blackgod 发表于 2021-9-27 09:52

exec('/usr/local/bin/wkhtmltopdf    '.$html.' /www/wwwroot/www.XXX.com/public/resume/'.$fileName.'.pdf');


参考下,用绝对路径试下

小小学生 发表于 2021-9-27 10:32

张筱家 发表于 2021-9-27 09:44
或许是php-fpm的用户没有权限去执行,你可以直接将wkhtmltox/bin/wkhtmltopdf 路径写上并补全试试看

$res = exec('/www/wwwroot/wkhtmltox/bin/wkhtmltopdf https://www.baidu.com /www/wwwroot/baid2122211u.pdf',$arr);
我这么写了 还是不可以 打印出来arr是空的

小小学生 发表于 2021-9-27 10:33

php01 发表于 2021-9-27 09:46
应该是权限问题。你看一下有没有报错信息,报错信息贴出来

没有报错,$res = exec('/www/wwwroot/wkhtmltox/bin/wkhtmltopdf https://www.baidu.com /www/wwwroot/baid2122211u.pdf',$arr);
这样执行出来就是$arr为空

小小学生 发表于 2021-9-27 10:51

blackgod 发表于 2021-9-27 09:52
exec('/usr/local/bin/wkhtmltopdf    '.$html.' /www/wwwroot/www.XXX.com/public/resume/'.$fileName.'.p ...

我试了下用绝对路径
$res = exec('/www/wwwroot/wkhtmltox/bin/wkhtmltopdf https://www.baidu.com /www/wwwroot/baid2122211u.pdf',$arr);
这样执行出来就是$arr为空

千百度 发表于 2021-9-27 11:15

用Mpdf吧,这个好用,我用这个生成电子合同的PDF版

张筱家 发表于 2021-9-27 11:15

小小学生 发表于 2021-9-27 10:32
$res = exec('/www/wwwroot/wkhtmltox/bin/wkhtmltopdf https://www.baidu.com /www/wwwroot/baid2122211 ...

你是php-fpm运行用户是www吗,你可以切换www到用户执行看看是缺少那些权限

小小学生 发表于 2021-9-27 11:37

张筱家 发表于 2021-9-27 11:15
你是php-fpm运行用户是www吗,你可以切换www到用户执行看看是缺少那些权限

get_current_user()打印出来是Administrator
页: [1] 2
查看完整版本: PHP中HTML转换PDF失败问题