错误提示
Update readiness checks
Your site does not pass some readiness checks for automatic updates. It cannot be automatically updated until further action is performed.
The file system is not writable.
The Drupal directory "/var/www/html/cms/web" is not writable.
The project root directory "/var/www/html/cms" is not writable.
The vendor directory "/var/www/html/cms/vendor" is not writable. 错误原因
Drupal的自动更新功能需要对以下目录有写入权限,但目前这些目录不可写:
目录
说明
/var/www/html/cms/web Drupal核心目录
/var/www/html/cms 项目根目录
/var/www/html/cms/vendor Composer依赖目录
为什么会出现这个问题?
这通常发生在以下情况:
Drupal通过Composer安装后,文件所有者是root或其他用户
Web服务器(如Apache/Nginx)运行用户(如www-data)没有写入权限
解决方案
方案一:修改目录所有权(推荐)
将目录所有权更改给Web服务器用户:
bash
# 首先确认您的Web服务器运行用户
# Apache通常使用: www-data (Ubuntu/Debian) 或 apache (CentOS/RHEL)
# Nginx通常使用: www-data 或 nginx
# Ubuntu/Debian + Apache/Nginx
sudo chown -R www-data:www-data /var/www/html/cms
# CentOS/RHEL + Apache
sudo chown -R apache:apache /var/www/html/cms
# CentOS/RHEL + Nginx
sudo chown -R nginx:nginx /var/www/html/cms
方案二:修改目录权限
bash
# 设置目录权限为755,文件权限为644
sudo find /var/www/html/cms -type d -exec chmod 755 {} \;
sudo find /var/www/html/cms -type f -exec chmod 644 {} \;
# 对于需要写入的目录,设置为775
sudo chmod -R 775 /var/www/html/cms/web
sudo chmod -R 775 /var/www/html/cms/vendor
方案三:将用户加入Web服务器组
如果您希望保留当前用户所有权,可以将当前用户加入Web服务器用户组:
bash
# 将当前用户加入www-data组
sudo usermod -a -G www-data $USER
# 设置组权限
sudo chmod -R 775 /var/www/html/cms
sudo chgrp -R www-data /var/www/html/cms
执行步骤总结
bash
# 1. 查看当前Web服务器用户
ps aux | grep -E 'apache|nginx|httpd'
# 2. 修改所有权(假设是www-data)
sudo chown -R www-data:www-data /var/www/html/cms
# 3. 设置适当权限
sudo find /var/www/html/cms -type d -exec chmod 755 {} \;
sudo find /var/www/html/cms -type f -exec chmod 644 {} \;
# 4. 刷新Drupal页面,重新检查状态
⚠️ 安全提示
生产环境:谨慎设置权限,避免将敏感文件设为可写
权限修复后,建议在Drupal后台重新运行状态检查
如果您使用共享主机,可能需要联系主机提供商协助处理
评论