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() 权限问题的主要内容,如果未能解决你的问题,请参考以下文章
调用未定义函数 Intervention\Image\Gd\imagejpeg()"
GD,加载 libJPEG,imagejpeg 返回 false