php GD图像无法创建的问题

时间:2010-05-19 22:26:29

标签: php image gd

使用以下代码,我的浏览器返回'未创建或保存图像'。我向你保证图像的位置存在。所以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成功! = \仍然无法弄清楚为什么它不会起作用。编辑:通过我的浏览器运行这个确切的脚本也是成功的。

4 个答案:

答案 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。