首先,您应该尝试使用确实存在且可检索的输入文件:
wget http://www.google.com/images/srpr/logo3w.png.jpg
--2012-08-21 20:55:24-- http://www.google.com/images/srpr/logo3w.png.jpg
正在解析 www.google.com (www.google.com)... 173.194.35.179, 173.194.35.177, 173.194.35.178, ...
正在连接到 www.google.com (www.google.com)|173.194.35.179|:80... 已连接。
已发送 HTTP 请求,等待响应... 404 Not Found
2012-08-21 20:55:24 错误 404:未找到。
然后,查看convert
您的 PHP 使用的是哪个:
exec(which convert 2>/tmp/whichconvert.2 1>whichconvert.1)
和
cat /tmp/whichconvert.{1,2}
最后,也尝试使用完整路径convert
:
exec(/usr/local/full/path/to/convert logo:
-resize 640 /home/mysite/public_html/public/img/posts/original/1414_301a4.jpg);
进而
identify /home/mysite/public_html/public/img/posts/original/1414_301a4.jpg
更新:
您要检索的文件可能不是logo3w.png.jpg
,但是logo3w.png
:
wget http://www.google.com/images/srpr/logo3w.png
--2012-08-21 21:04:22-- http://www.google.com/images/srpr/logo3w.png
正在解析 www.google.com (www.google.com)... 173.194.35.180, 173.194.35.177, 173.194.35.179, ...
正在连接到 www.google.com (www.google.com)|173.194.35.180|:80... 已连接。
HTTP 请求已发送,等待响应... 200 OK
长度:7007 (6.8K) [图片/png]
保存到:'logo3w.png'
100%[================================================= ======>] 7,007 --.-K/s 在 0.02 秒内
2012-08-21 21:04:22 (451 KB/s) - 'logo3w.png' 已保存 [7007/7007]
此外,如果它仅适用于本地文件(不适用于远程 http-URI),您可能需要检查您使用的http 委托convert
是否确实安装在您的系统上:
convert -list delegate | grep http
https => "/opt/local/bin/curl" -s -k -o "%o" "https:%M"
另外,检查运行 PHP 的用户帐户是否确实有权写入目标目录:
exec(touch /home/mysite/public_html/public/img/posts/original/touchtest);
进而
ls -l /home/mysite/public_html/public/img/posts/original/touchtest