用户
 找回密码
 入住 CI 中国社区
搜索
查看: 151|回复: 3
收起左侧

[图片处理] ci3 图像处理类image_lib的bug?(无法覆盖同名文件,却有误导性的提示)

[复制链接]
发表于 2018-5-31 17:33:34 | 显示全部楼层 |阅读模式
大家在使用图像处理类的图像缩小功能时有没有遇到问题?

需求:缩小1个图片,然后使用原名将其覆盖,出现如下误导性提示:Unable to save the image. Please make sure the image and file directory are writable.

查image_lib源码,让错误提示进一步显示(仍有误导性):
Message: imagepng(/opt/dir_x/images/test.png): failed to open stream: Permission denied

其实这个目录的属性已经设置为777了,上传文件功能也正常。若不覆盖原文件图片,如将目标文件名改为test2.png就能正常缩小且不报错。
发表于 2018-5-31 17:48:09 | 显示全部楼层
这个无权限的提示是 PHP 提示的,与 CI 无关,从 CI 的提示来说,确实也是文件不可写,提示的没有问题。CI 也只能从 PHP 获取错误信息,不可能越过 PHP。

从现象看应该就是权限问题,你要看看文件的权限,而不是目录的权限。建议再仔细查找一下问题原因。
 楼主| 发表于 2018-5-31 18:53:28 | 显示全部楼层
Hex 发表于 2018-5-31 17:48
这个无权限的提示是 PHP 提示的,与 CI 无关,从 CI 的提示来说,确实也是文件不可写,提示的没有问题。CI  ...

谢谢回复。

似是bug。
当前变通的解决办法:test.png =>  test_.png(缩小处理后的test.png),然后重命名test_.png => test.png,重命名时可以正常覆盖。间接实现了图片处理完覆盖原图的效果。综合来看,这绝非什么文件权限问题。
发表于 2018-6-1 01:40:39 | 显示全部楼层
webqd 发表于 2018-5-31 18:53
谢谢回复。

似是bug。

如果是 BUG,这也应该是 PHP imagepng 函数的问题,这个是 PHP 原生函数,并不是 CI 的函数。

PHP 原生函数有这个问题的可能性很小,如果有这么基础的 BUG,PHP 社区肯定会有很多人报告出来。另外我试了下,我这里完全正常。

我觉得还是应该继续找找问题的根源,比如系统配置等。

本版积分规则