从PHP调用'convert'命令时权限被拒绝

时间:2014-12-21 17:33:50

标签: php apache permissions imagick

我正在尝试使用PHP的ImageMagick。我在虚拟CentOS服务器上安装了ImageMagick和PHP扩展。从bash执行convert命令按预期工作。 如果我用内容

制作一个PHP文件
<?php exec('convert /home/vagrant/test/image.jpg -resize 200x200 /home/vagrant/test/image_converted.jpg'); ?>

并使用命令行php convert.php在PHP中调用它也可以。 但是,如果我启动我的Apache服务器并尝试通过浏览器访问该页面,则会返回错误:

convert: unable to open image `/home/vagrant/test/image.jpg': Permission denied @ blob.c/OpenBlob/2480.
convert: missing an image filename `/home/vagrant/test/image_converted.jpg' @ convert.c/ConvertImageCommand/2800.

所以,我认为这可能与权限有关。调用ps aux | egrep '(apache|httpd)'显示了名为apache的用户的进程,因此我假设它是服务器。所以我尝试将所有权更改为此用户

sudo chown -R apache /home/vagrant/test/

再次,调用网站我收到错误消息。然后我尝试为所有用户提供完全访问权限

sudo chmod -R 777 /home/vagrant/test/

- &GT; drwxrwxrwx. 2 apache vagrant 4096 Dec 21 16:56 test

同样,发生了同样的错误。我做错了什么,拜托?

1 个答案:

答案 0 :(得分:0)

您只能更改子目录的权限。如果apache没有足够的home或home / vargrant权限,您将无法访问该文件。

您可以使用sudo检查用户是否具有足够的权限:

sudo -u apache cp /home/vagrant/test/image.jpg /home/vagrant/test/image_converted.jpg