本地搭建WordPress遇权限错误:Failed to open directory: Permission denied
解决本地WordPress登录时block-template-utils.php第235行错误
先验证目标目录的有效性:在
block-template-utils.php的234行(if (file_exists($base_directory)) {之后)添加一行调试代码:var_dump($base_directory); exit;刷新页面后查看输出的路径是否真实存在,很多时候是模板目录路径配置错误,导致迭代器找不到目标目录报错。
修复RecursiveDirectoryIterator调用逻辑:默认情况下该迭代器会包含
.和..这类系统目录,容易触发权限异常。把235行代码修改为:$nested_files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($base_directory, RecursiveDirectoryIterator::SKIP_DOTS) );跳过系统默认的点目录,避免不必要的权限检查。
放弃
chmod -R 777的危险操作:本地环境也不该用这么开放的权限,正确的权限配置应该是:# 把目录所有者改为Web服务运行用户(比如www-data) sudo chown -R www-data:www-data /opt/lampp/htdocs/wordpress # 目录设为755,文件设为644 sudo find /opt/lampp/htdocs/wordpress -type d -exec chmod 755 {} \; sudo find /opt/lampp/htdocs/wordpress -type f -exec chmod 644 {} \;检查SELinux限制(Linux系统):如果是Linux环境,SELinux可能拦截PHP对目录的访问。可以临时关闭测试:
sudo setenforce 0若问题解决,再通过以下命令设置永久的目录上下文:
sudo chcon -R -t httpd_sys_rw_content_t /opt/lampp/htdocs/wordpress
注:你的错误本质是RecursiveDirectoryIterator初始化失败,核心原因要么是目标目录不存在/路径错误,要么是PHP进程被系统安全机制(如SELinux)限制了访问权限,哪怕设置了777也可能无效。
内容的提问来源于stack exchange,提问作者bryan123
相关产品推荐
相关产品推荐

