解决session_start() open failed Permission denied (13)报错问题

原因:
session默认存在服务器,以文件的形式存储起来,没有读写权限才会Permission denied

默认存在/tmp目录

方法1:session文件修改权限777

sudo chmod 0777 xxxx

不过不建议这样做,这样所有人都能修改这个文件

方法2:修改session文件所有者

如果session文件所有者跟PHP执行的所有者一致,只能PHP操作session文件
如果使用root启动php的话,所有者是root,但是在php-fpm.conf配置文件中,设置有 pool www,这里默认执行则是www,如果没有修改过php-fpm.conf配置文件,有可能文件所有者是 nobody:www的情况

[root@localhost ~]# ps -ef |grep php
root     13836     1  0 Aug21 ?        00:00:19 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody   13837 13836  0 Aug21 ?        00:00:00 php-fpm: pool www
nobody   13838 13836  0 Aug21 ?        00:00:00 php-fpm: pool www

当然也可以用PHP生成一个文件,查看文件所有者

[vincent@iZbp1i4eha5b7d79j6zjyjZ log]$ ll
-rw-rw-r--1 nobody  www   5864 Jul 20 23:24 20200720.log

再将/tmp目录的session文件修改跟PHP所有者一样就行了

sudo chown nobody:www  xxxx

方法3:修改PHP-FPM所有者

可以修改配置文件,找到[www]下面的user与group,修改跟session文件所有者一致

user = www
group = www

修改后重启php-fpm就可以了

你可能感兴趣的:(解决session_start() open failed Permission denied (13)报错问题)