首先,您应该尝试使用确实存在且可检索的输入文件:
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
Resolving www.google.com (www.google.com)... 173.194.35.179, 173.194.35.177, 173.194.35.178, ...
Connecting to www.google.com (www.google.com)|173.194.35.179|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2012-08-21 20:55:24 ERROR 404: Not Found.
接下来,查看您的PHP使用哪个convert
命令:
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
Resolving www.google.com (www.google.com)... 173.194.35.180, 173.194.35.177, 173.194.35.179, ...
Connecting to www.google.com (www.google.com)|173.194.35.180|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7007 (6.8K) [image/png]
Saving to: ‘logo3w.png’
100%[=====================================================>] 7,007 --.-K/s in 0.02s
2012-08-21 21:04:22 (451 KB/s) - ‘logo3w.png’ saved [7007/7007]
另外,如果它仅适用于本地文件(而不是远程http-URI),则您需要检查convert
使用的http代理是否确实已安装在您的系统上:
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
echo $PATH
命令可以告诉你。 - Marc Bchmod 777
命令,现在使用exec()
就可以正常工作了。 - Nyxynyx