PHP: fopen() Permission denied
2016-03-10 00:09
525 查看
打算在虚拟主机上装一个discuz,但是环境检测总是过不了。一直出现配置文件目录不存在或者文件不可写的错误提示。
在网上找了这个解决方案,自己也尝试了各种方式,但是没有一个好用的。后来终于在一个stack overflow的一篇帖子(原文链接)的最下面一个不起眼的角落里看到一段跟自己情况一模一样的描述,尝试了一下,居然好用了。修改其实很简单,关键是知道修改哪里!就像斯坦门茨为福特公司找到电机的毛病之后说的,“画一条线,1美元;知道在哪儿画线,9999美元”。这个问题一直折腾了我好几天。于是赶紧记录下来,以备以后不时之需。
环境:CentOS,nginx, php-fpm
配置:nginx转发给fast_CGI来处理所有php请求。
问题:php fopen() 报permission denied异常
解决思路:这里将所有修改的思路都记下来,供以后参考。
1.修改nginx运行账户为系统当前账户。即修改/etc/nginx/nginx.conf,将其中的user 改为当前系统账户
2.修改php的运行账户为系统当前账户。即修改/etc/php-fpm.d/www.conf,将其中的user和group改为当前系统账户对应值。
3.修改网站的目录和文件对应权限,默认为755,特殊文件为777,在此不详细记录。比如
4.关键是执行了上面1-3之后,还是不好用,其他方式如改文件owner,所有文件目录都改成777,各种重启,都试了,还是不好用,兜兜转转,又回到SELinux的设置上来,只需要修改一个SELinux的httpd参数。命令如下
在网上找了这个解决方案,自己也尝试了各种方式,但是没有一个好用的。后来终于在一个stack overflow的一篇帖子(原文链接)的最下面一个不起眼的角落里看到一段跟自己情况一模一样的描述,尝试了一下,居然好用了。修改其实很简单,关键是知道修改哪里!就像斯坦门茨为福特公司找到电机的毛病之后说的,“画一条线,1美元;知道在哪儿画线,9999美元”。这个问题一直折腾了我好几天。于是赶紧记录下来,以备以后不时之需。
环境:CentOS,nginx, php-fpm
配置:nginx转发给fast_CGI来处理所有php请求。
问题:php fopen() 报permission denied异常
解决思路:这里将所有修改的思路都记下来,供以后参考。
1.修改nginx运行账户为系统当前账户。即修改/etc/nginx/nginx.conf,将其中的user 改为当前系统账户
sudo vi /etc/nginx/nginx.conf ===========in vi mode================ #user nginx; user appuser; //appuser 为当前有访问/修改网站目录/文件权限的账户,下同
2.修改php的运行账户为系统当前账户。即修改/etc/php-fpm.d/www.conf,将其中的user和group改为当前系统账户对应值。
sudo vi /etc/php-fpm.d/www.conf ===========in vi mode================ ;user = apache user = appuser ; RPM: Keep a group allowed to write in log dir. ;group = apache group = appuser
3.修改网站的目录和文件对应权限,默认为755,特殊文件为777,在此不详细记录。比如
chmod -R 755 /var/www/html/test //修改test路径上的所有目录权限为755 chmod 777 /var/www/html/test/config.php //修改config.php权限为777
4.关键是执行了上面1-3之后,还是不好用,其他方式如改文件owner,所有文件目录都改成777,各种重启,都试了,还是不好用,兜兜转转,又回到SELinux的设置上来,只需要修改一个SELinux的httpd参数。命令如下
sudo setsebool -P httpd_unified on
相关文章推荐
- PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
- 简单谈谈php浮点数精确运算
- PHP浮点数的一个常见问题
- Zend Framework教程之配置文件application.ini解析
- Zend Framework教程之Application和Bootstrap用法详解
- php实现无限级分类查询(递归、非递归)
- 我的PHP退役了
- weiphp 与sina云应用实践
- FileInputStream与FileOutputstream
- PHP 类的访问控制与封装 public,protected,private 修饰符
- TP-link 无线路由器WDS设置方法图解_无线桥接设置 wifi无线变有线路由 中转站
- 关于vsftpd下显示的修改时间与系统时间不一致的解决方法
- 启用vsftpd日志及其解读
- 启用vsftpd日志及其解读
- php 无法加载php.ini问题
- 关于Thinkphp二维数组循环输出问题
- 理解thinkphp的命名空间
- php 关于时区 date gmdate date_default_timezone_set/get 终极答疑
- 关于PHP时间函数使用详情
- php 读取 csv 文件的两种方法