使用以下代码,我的浏览器返回"图像未创建或保存".我向你保证图像的位置存在.所以if语句中的行由于某种原因返回false,并且是安装了GD.有任何想法吗?
if ($img = @imagecreatefromjpeg("/var/www/images/upload/1/1.jpg")) {
die("image was created");
} else {
die ("image was not created or saved");
}
Run Code Online (Sandbox Code Playgroud)
好的,我这样做了:
<?php
error_reporting(E_ALL);
if (fopen('/var/www/images/upload/1/1.jpg')) {
echo 'file was opened';
} else {
echo 'file was not opened';
}
?>
Run Code Online (Sandbox Code Playgroud)
每次都没有打开返回文件,apache组拥有所有这些文件夹的所有权限.GD或PHP是不同的用户名?
从测试脚本执行is_readable()后,它返回true.还有什么问题呢?
所以...当我运行脚本时:
error_reporting(E_ALL);
imagecreatefromjpeg("/var/www/images/upload/1/1.jpg");
print_r(error_get_last());
echo ("hi");
Run Code Online (Sandbox Code Playgroud)
我收到了死亡白屏.如果我注释掉imagecreatefromjpeg行,屏幕会显示'hi'
刚尝试了500k jpg图像,看看它是否是内存问题,但仍然有白屏.
当我在if语句中运行imagecreatefromjpeg并通过终端运行脚本时,imagecreatefromjpeg成功!= \仍然无法弄清楚为什么它不会起作用.编辑:通过我的浏览器运行这个确切的脚本也是成功的.
显然,$ img的值并未评估为真.
对不起,这太难以抗拒..我的观点是,你的帖子中没有其他所有废话.
如果进程无法读取文件,则映像创建可能会失败.尝试打开文件进行读取.另外,摆脱函数调用前的错误抑制(@).然后将error_reporting设置为E_ALL并将display_errors设置为on.
更新:如果fopen失败,则运行php的用户没有该文件的读取权限.尝试使用fopen和fwrite将文件写入/ tmp,以查看您的php/apache进程正在运行的用户.然后确保用户具有读取权限.或者您可以尝试将文件chmoding为o + r以确认每个人的读取权限都可以解决我们的问题.