【发布时间】:2014-04-28 22:34:07
【问题描述】:
我不是很喜欢 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: Permission denied”
我检查了 /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,但我不能发布两个以上的链接。
【问题讨论】:
-
你是如何解决这个问题的?我面临同样的问题,你是对的;我们不应该禁用 SELinux。当涉及到共享目录时,这是一个主要问题。我的情况不同:我是 VPS 上的二级用户,权限有限。通过命令行脚本可以完美运行
标签: php linux permissions exec wkhtmltopdf