You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CentOS 9 Stream服务器PHP请求报phpFastCache无法创建缓存目录错误求助

CentOS 9 Stream服务器PHP请求报phpFastCache无法创建缓存目录错误求助

嗨,这个权限问题我之前在CentOS 9上折腾过,咱们一步步来排查解决:

首先看你给出的错误日志,核心问题就是PHP进程没有权限创建/写入/var/www/html/core/cache/127.0.0.1/Files这个目录,在CentOS这类系统里,主要是用户归属和SELinux这两个点容易出问题,咱们挨个来处理:

1. 先确认运行PHP的用户是谁

因为PHP一般是通过web服务器(Apache/Nginx)或者PHP-FPM运行的,不同的运行方式对应的用户不一样:

  • 如果是Apache,默认用户是apache
  • 如果是Nginx搭配PHP-FPM,你可以打开/etc/php-fpm.d/www.conf,查看usergroup配置项,一般是nginx或者php-fpm
  • 也可以临时在PHP代码里加一行echo exec('whoami');,访问页面就能看到当前PHP进程的用户

2. 修正缓存目录的归属和权限

先确保缓存的父目录存在,然后把目录的所有权给到PHP运行的用户:

# 先创建上层目录(如果还没的话)
sudo mkdir -p /var/www/html/core/cache/127.0.0.1

# 假设PHP运行用户是apache,替换成你实际的用户/组
sudo chown -R apache:apache /var/www/html/core/cache

# 设置合适的权限,目录755,文件644足够
sudo chmod -R 755 /var/www/html/core/cache

3. 检查SELinux(CentOS 9默认开启,很容易被忽略)

CentOS 9默认是强制开启SELinux的,就算你改了目录权限,SELinux也可能阻止web服务器读写目录:

  • 先临时关闭SELinux测试(只是验证,不要长期关闭):
    sudo setenforce 0
    
    如果测试后错误消失,说明就是SELinux的问题,给缓存目录添加正确的SELinux上下文:
    sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/core/cache(/.*)?"
    sudo restorecon -Rv /var/www/html/core/cache
    
    这样SELinux就允许web服务器读写这个目录了,之后记得把SELinux重新开启:sudo setenforce 1

4. 确认phpFastCache的配置

最后再检查下phpFastCache的配置文件,确保缓存目录的路径配置正确,没有拼写错误,而且配置里的目录权限设置和你实际设置的一致。

另外,你提供的错误日志栈信息如果能补全的话会更完整,但目前的信息已经足够定位问题啦~

备注:内容来源于stack exchange,提问作者llanato

火山引擎 最新活动