imagejpeg() 权限问题

Posted

技术标签:

【中文标题】imagejpeg() 权限问题【英文标题】:imagejpeg() permission problems 【发布时间】:2011-07-03 14:36:36 【问题描述】:

我正在尝试使用 gd 库创建缩略图,并且正在使用 imagejpeg() 函数。然后输出显示以下错误

警告:imagejpeg() [function.imagejpeg]:无法打开 '/var/www/html/yahoo/thumbs/1136.jpg' 写作:许可被拒绝 /var/www/html/yahoo/Thumbnail.php 上 第 56 行

我已在 thumbs 文件夹上设置了完整的 777 权限,是否还有其他可能导致此问题的原因,或者我在这里遗漏了什么。

谢谢:)

我尝试使用 fopen 创建文件并遇到同样的问题.. fopen 返回以下警告:

Warning: fopen(/var/www/html/yahoo/thumbs/1176.jpg) [function.fopen]: failed to open stream: Permission denied in /var/www/html/yahoo/Thumbnail.php on line 56 can't open file

【问题讨论】:

先尝试使用fopen()创建文件。 注意 umask:php.net/manual/en/function.umask.php 可能是 CHOWN 的问题。就像 PHP 用户和您的 FTP 用户一样。 已经有 1136.jpg 文件了吗?如果有,您需要对文件本身具有写入权限才能用新文件覆盖它。 不,它不存在,所以我需要先用fopen创建文件,然后设置权限吗?如果是这样,我应该给予什么访问权限 【参考方案1】:

SELinux 阻止 HTTPd 写入该目录。使用chcon/var/www/html/yahoo/thumbs/ 的文件上下文更改为httpd_sys_rw_content_t,如果这样可以工作,则使用semanage 使其永久化。

【讨论】:

感谢它的工作,我运行了以下命令:semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/yahoo/thumbs' restorecon -v '/var/www/html/yahoo/thumbs ' restorecon -v '/var/www/html/yahoo/thumbs' 导致了“错误选项”错误,但没有它它可以正常工作 我有同样的问题,我无法解决。你能解释一下吗?

以上是关于imagejpeg() 权限问题的主要内容,如果未能解决你的问题,请参考以下文章

扩展函数中不存在 imagejpeg

imagepng或imagejpeg浏览器无显示问题

调用未定义函数 Intervention\Image\Gd\imagejpeg()"

GD,加载 libJPEG,imagejpeg 返回 false

Docker PHP-FPM 调用未定义函数 Intervention\Image\Gd\imagejpeg()

php jquery jcrop 和 imagejpeg