WordPress后台出现open_basedir限制报错,主机禁关权限求解决
解决WordPress因open_basedir限制引发的file_exists报错
临时代码修复
找到站点目录下的wp-includes/blocks.php文件,定位到532行的file_exists('core/post-comments')代码,把它替换成绝对路径写法:
file_exists(wp_normalize_path(WPINC . '/blocks/core/post-comments'))
WPINC是WordPress内置常量,会自动指向wp-includes目录,wp_normalize_path能统一路径分隔符,避免跨系统问题。
注意:WordPress版本更新后,这个修改会被覆盖,需要重新操作,更推荐下面的永久方案。
永久修复:用MU插件解决
- 进入
wp-content目录,若没有mu-plugins文件夹就新建一个 - 在
mu-plugins里创建fix-blocks-open-basedir.php文件,写入以下代码:
<?php /* Plugin Name: Fix Blocks Open Basedir Error */ add_filter('pre_block_file_exists', function($exists, $path) { if ($path === 'core/post-comments') { $full_path = wp_normalize_path(WPINC . '/blocks/' . $path); return file_exists($full_path); } return $exists; }, 10, 2);
MU插件会自动激活,无需手动开启,它会在原代码执行路径检查前,把相对路径转换成符合open_basedir要求的绝对路径,彻底解决报错。
替代方案:禁用评论区块(如果不需要)
如果你的站点用不到core/post-comments区块,可以直接禁用它,从根源上取消这个路径检查:
在主题的functions.php文件末尾添加这段代码:
add_action('init', function() { unregister_block_type('core/post-comments'); });
额外排查点
- 检查WordPress版本,更新到最新稳定版,旧版本可能存在路径解析的bug,更新后可能自动修复
- 确认
wp-includes/blocks/core/post-comments目录是否存在,若缺失,从官方WordPress安装包中复制对应目录补全
内容的提问来源于stack exchange,提问作者Kristýna Kořínková
相关产品推荐
相关产品推荐

