我正在尝试使用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 中调用它php convert.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/
--> drwxrwxrwx. 2 apache vagrant 4096 Dec 21 16:56 test
同样,发生了相同的错误。请问我做错了什么?
您只需更改子目录的权限。如果 apache 没有足够的权限来获取 home 或 home/vargrant,您将无法访问该文件。
您可以使用 sudo 检查用户是否具有足够的权限:
sudo -u apache cp /home/vagrant/test/image.jpg /home/vagrant/test/image_converted.jpg