以下问题是与我在 Stack Overflow 上的问题相关。
当我在特定目录上生成图像时出现以下错误:
imagejpeg(/var/www/html/assets/files/captcha/1465029891.5357.jpg): failed to open stream: Permission denied
我想使目录可写,并且我一直使用下面这个命令使目录可写,但它根本没有影响。
chown -R apache:apache /var/www/html/assets/files/captcha
chmod 755 /var/www/html/assets/files/captcha
下面是我运行时的情况ps -aux|grep -i httpd
:
root 30846 0.0 0.1 423604 17476 ? Ss 15:43 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30848 0.0 0.1 424024 12892 ? S 15:43 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30849 0.0 0.0 423736 10032 ? S 15:43 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30850 0.0 0.0 423912 11680 ? S 15:43 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30851 0.0 0.0 423736 9280 ? S 15:43 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30852 0.0 0.0 423736 9276 ? S 15:43 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30854 0.0 0.0 423736 9268 ? S 15:44 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30855 0.0 0.0 423736 9032 ? S 15:44 0:00 /usr/sbin/httpd -DFOREGROUND
apache 30856 0.0 0.0 423736 9032 ? S 15:44 0:00 /usr/sbin/httpd -DFOREGROUND
root 30860 0.0 0.0 112648 988 pts/1 S+ 15:51 0:00 grep --color=auto -i httpd
我检查了服务器,发现它由 Apache 运行,我更改了用户、组并更改了权限,但仍然出现上述错误。我错过了哪一部分?
答案1
我找到了有关我的问题的线索,因为我使用的是 CentOS 7,有一些安全调用 SE Linux(安全增强 Linux),它是 Centos 的隐藏防火墙。
我正在遵循这篇文章,我的验证码现在工作正常,因为他们可以写入特定目录。
- - 更新 - -
sudo chown apache:apache -R /data/www/html/sites/mysite cd /data/www/html/sites/mysite
查找 . -type f -exec chmod 0644 {} \;
查找 . -type d -exec chmod 0755 {} \;
sudo chcon -t httpd_sys_content_t /data/www/html/sites/mysite -R
须藤 chcon -t httpd_sys_rw_content_t /data/www/html/sites/mysite/logs -R 须藤 chcon -t httpd_sys_rw_content_t /data/www/html/sites/mysite/uploads -R