Drupal 10.4.3迁移服务器后无法写入styles文件夹求助
Drupal 10.4.3迁移后styles目录无法写入内容的排查方案
1. 检查服务器安全模块限制(SELinux/AppArmor)
很多时候目录权限一致但写入失败,是安全模块拦截了操作:
- SELinux:
- 执行
getenforce查看状态,若为Enforcing,临时执行setenforce 0测试是否恢复正常。 - 若测试有效,可执行
restorecon -Rv /sites/default/files修复文件上下文,或修改SELinux规则设为Permissive。
- 执行
- AppArmor:
- 执行
aa-status查看是否有针对PHP/Imagemagick的限制规则,如有需调整对应配置文件。
- 执行
2. 验证PHP运行用户与目录所有者匹配
迁移后服务器的PHP运行用户可能和原服务器不同:
- 查看PHP运行用户:执行
ps aux | grep php-fpm,或在phpinfo页面查看User/Group字段。 - 确认
/sites/default/files及styles子目录的所有者为该PHP用户,或目录权限设为775且PHP用户属于目录所属组。
3. 检查Drupal文件系统配置
- 后台进入配置 > 媒体 > 文件系统,确认:
- 公共文件系统路径为
sites/default/files - 临时目录(如
/tmp)权限正常且可写(图片处理需先写入临时目录再移动到styles)
- 公共文件系统路径为
- 检查
settings.php中$settings['file_public_path']的配置是否正确。
4. 手动测试写入与图片生成权限
- 用PHP运行用户手动创建文件:
sudo -u [PHP运行用户] touch /sites/default/files/styles/medium/test.txt,若无法创建则确认用户权限问题。 - 直接测试Imagemagick命令:
convert /sites/default/files/test.jpg /sites/default/files/styles/medium/test.jpg,排查工具本身的执行权限问题。
5. 检查目录特殊权限与磁盘状态
- 查看目录权限:
ls -ld /sites/default/files,确认无+t粘滞位等特殊限制导致的写入拦截。 - 检查磁盘空间:
df -h确认styles目录所在分区未被占满。
6. 清除Drupal缓存
执行drush cr或后台手动清除所有缓存,避免旧配置或路径缓存导致的异常。
7. 查看服务器错误日志
- 检查Apache/Nginx的错误日志、PHP错误日志,日志中会记录具体的写入失败原因(如权限被拒、磁盘IO错误等)。
内容的提问来源于stack exchange,提问作者jfc
相关产品推荐
相关产品推荐

