You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地搭建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:10:57