【问题标题】:PHP-GD imagejpeg unable to openPHP-GD imagejpeg 无法打开
【发布时间】:2012-02-21 00:39:15
【问题描述】:

尝试保存使用 GD 制作的缩略图时

imagejpeg($tnImage, "../../img/thumbs/".$maxWidth."x".$maxHeight."_".$filename);

我收到以下错误:

警告:imagejpeg() [function.imagejpeg]:无法打开“../../img/thumbs/80x80_55865-drops.jpg”进行写入:没有这样的文件或目录/home/user/workspace/stewart/server-side/libImg.php

/home/user/workspace/img/thumbs 的权限设置为 0x777。

这里有什么问题?

【问题讨论】:

  • 它找不到文件,但这应该不是问题,因为如果它不存在,imagejpeg 函数应该创建它。你用的是什么版本的GD?

标签: php gd


【解决方案1】:

您从哪里运行文件?如果它来自server-side 目录,那么我认为您缺少“../”

试试这个:

var_dump(realpath("../../img/thumbs/".$maxWidth."x".$maxHeight."_".$filename));

【讨论】:

  • var_dump(realpath("../../img/thumbs"));返回 bool(false)。
  • 来自 php.net:realpath() 在失败时返回 FALSE,例如如果文件不存在。检查路径,尝试使用绝对路径。
  • 我收到了错误的回复:mydomain.com/wpdev/wp-content/uploads/bool(false)。我有一种感觉,它不会将我上传的图像保存到任何地方的服务器上。我将尝试直接上传而不是现在调整大小,看看会发生什么。
【解决方案2】:

/home/user/workspace/stewart/server-side/

目录

../../img/thumbs/  

等于

 /home/user/workspace/img/thumbs/

所以你需要

../../../img/thumbs/

【讨论】:

  • 对不起,写问题时出错了:/home/user/workspace/img/thumbs has its permissions set to 0x777.
【解决方案3】:

解决方法是为imagejpeg 提供文件的完整路径。

所以你可以在config.php 中拥有类似的东西

define('APPLICATION_PATH',  dirname(__FILE__));

然后在你的functions.php中像这样调用imagejpeg:

@imagejpeg($image, APPLICATION_PATH . '/uploads/myfile.jpg', $quality); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多