webqd 发表于 2018-5-31 17:33:34

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

大家在使用图像处理类的图像缩小功能时有没有遇到问题?

需求:缩小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就能正常缩小且不报错。

Hex 发表于 2018-5-31 17:48:09

这个无权限的提示是 PHP 提示的,与 CI 无关,从 CI 的提示来说,确实也是文件不可写,提示的没有问题。CI 也只能从 PHP 获取错误信息,不可能越过 PHP。

从现象看应该就是权限问题,你要看看文件的权限,而不是目录的权限。建议再仔细查找一下问题原因。

webqd 发表于 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,重命名时可以正常覆盖。间接实现了图片处理完覆盖原图的效果。综合来看,这绝非什么文件权限问题。

Hex 发表于 2018-6-1 01:40:39

webqd 发表于 2018-5-31 18:53
谢谢回复。

似是bug。

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

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

我觉得还是应该继续找找问题的根源,比如系统配置等。
页: [1]
查看完整版本: ci3 图像处理类image_lib的bug?(无法覆盖同名文件,却有误导性的提示)