使用以下代码,我的浏览器返回'未创建或保存图像'。我向你保证图像的位置存在。所以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");
}
好的,我这样做了:
<?php
error_reporting(E_ALL);
if (fopen('/var/www/images/upload/1/1.jpg')) {
echo 'file was opened';
} else {
echo 'file was not opened';
}
?>
每次都没有打开返回文件,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");
我收到了死亡白屏。如果我注释掉imagecreatefromjpeg行,屏幕会显示“hi”
在500k jpg图像上尝试了这个,看看它是否是内存问题,但仍然有白屏。
当我在if语句中运行imagecreatefromjpeg并通过终端运行脚本时,imagecreatefromjpeg成功! = \仍然无法弄清楚为什么它不会起作用。编辑:通过我的浏览器运行这个确切的脚本也是成功的。
答案 0 :(得分:5)
显然,$ img的值没有评估为真。
很抱歉,这太难以抗拒..我的观点是,你的帖子中没有其他废话。
如果进程无法读取文件,则映像创建可能会失败。尝试打开文件进行读取。另外,摆脱函数调用前的错误抑制(@)。然后将error_reporting设置为E_ALL并将display_errors设置为on。
更新:如果fopen失败,则运行php的用户没有该文件的读取权限。尝试使用fopen和fwrite将文件写入/ tmp,以查看您的php / apache进程正在运行的用户。然后确保用户具有读取权限。或者您可以尝试将文件chmod到o + r以确认每个人的读取权限都可以解决我们的问题。
答案 1 :(得分:0)
检查脚本是否有权访问/var/www/images/upload/1/1.jpg,记住您的Web服务器(假设它不是CLI脚本)可能以不同于预期的用户身份运行
答案 2 :(得分:0)
您可能无权访问该文件。
如果您的localhost映射到var / www,则无需像这样调用该文件。只需使用相对于PHP文件的路径。
答案 3 :(得分:0)
尝试使用error_get_last()(PHP&gt; = 5.2)或$ php_errormsg查看img *()函数返回的内容。
同样,更奇怪的是,检查文件可读性的更好方法是is_readable(),而不是fopen。