我对unix并不感兴趣,这就是为什么这个东西对我来说有点奇怪的原因。
操作系统是CentOS 6。
我读过几乎所有关于wkhtmltopdf的主题,但我的问题仍然存在。实际上,这不是wkhtmltopdf问题,而是权限问题。
总而言之: wkhtmltopdf在命令行中工作,而不是使用php exec()。
但是wget在php exec()中工作得很好:
我可以在命令行中执行wkhtmltopdf,工作正常:
/usr/bin/wkhtmltopdf "test.de" "/var/www/html/test/test.pdf" 2>&1
我可以用php执行wget,工作得很好:
exec('/usr/bin/wget -O /var/www/html/test/test123.txt "test.de" 2>&1', $output, $return_var);
但是,我无法使用php执行wkhtmltopdf:
exec('/usr/bin/wkhtmltopdf "test.de" "/var/www/html/test/test.pdf" 2>&1', $output, $return_var);
这导致"sh: /usr/bin/wkhtmltopdf:拒绝“
我检查了/usr/bin/wkhtmltopdf,并将其与/usr/bin/wget进行了比较。
权限相同: rwxr-xr-x或0755。
即使我将/usr/bin/wkhtmltopdf的chmod设置为777并将所有者设置为apache,错误仍然是相同的。
也许是百胜的事?!因为我通过yum和wkhtmltopdf安装了wget。这是我唯一能想到的不同之处。
我安装了wkhtmltopdf,如下所示:
tar -vxjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
mv wkhtmltopdf-amd64 /usr/bin/wkhtmltopdf
chmod +x /usr/bin/wkhtmltopdf
或者这会是SELinux的问题吗?我对此不太了解,但我阅读了我的研究,"httpd_ssi_exec“和"httpd_execmem”可能会有所帮助,我把两者都说为“是”,但拒绝许可的问题仍然存在。
因此,我想知道为什么wget与php和wkhtmltopdf不一起工作?希望有人能帮助我,我可以停止在这件事上生气;)
向你问好,亚历克斯
P.S.:test.de在我的脚本中是http://test.de,但是我不能发布两个以上的链接。
发布于 2014-03-21 16:44:58
尽管权限是777,但作为www user.There执行的命令将受到很大的限制,因为www具有非常低的权限levels.So使用setuid文件权限。
setuid意思是在执行时设置用户ID。如果setuid位打开了一个文件,执行该可执行文件的用户将获得拥有file.Hence的个人或组的权限,您可以以root/高特权用户的身份执行该命令。
发布于 2014-08-20 20:38:35
您可以使用:
exec('/usr/local/bin/wkhtmltopdf --print-media-type index.html termo590.pdf 2>&1');发布于 2014-03-26 13:38:46
如果不想禁用SELinux,另一种方法是使用cron运行此命令./usr/bin/wkhtmltopdf "test.de" "/var/www/html/test/test.pdf" 2>&1
1)从php程序中将参数名写入文件。
$Handle = fopen("myfile", 'w');
fwrite($Handle, "test.de");
fclose($Handle);2)创建一个bash脚本来读取该参数名并将其转换为pdf。
#!/bin/sh
arg=$(head -n 1 myfile)
/usr/bin/wkhtmltopdf arg "/var/www/html/test/test.pdf" 2>&1保存为pdf_converter.sh
chmod +x pdf_converter.sh3)在crontab中配置脚本
crontab -e和粘贴这个
* * * * * pdf_converter.shhttps://stackoverflow.com/questions/22560792
复制相似问题