服务器迁移后PHP 5.4.45 open_basedir权限异常求助(Plesk 17.5.3)
解决Plesk中open_basedir配置生效但仍触发限制的问题
我完全理解你这种明明配置了路径却还是报错的困惑,这种情况在Plesk+PHP的环境里挺常见的,咱们一步步来排查:
1. 先确认open_basedir的实际生效值
别光看Plesk面板的设置,得看PHP实际运行时用的配置是什么。在你的test.php里加上这段代码:
<?php phpinfo(); ?>
访问这个页面后,搜索open_basedir关键词,看看显示的路径列表里确实包含/var/www/vhosts/rock.church/httpdocs/吗?
- 如果没包含,说明Plesk的配置没同步到PHP的实际运行配置里:
- 先看你的PHP运行模式(Plesk面板里「域名>PHP设置」能看到,比如FastCGI、PHP-FPM),然后重启对应的服务:比如Apache或者PHP-FPM服务。
- 另外注意Plesk的服务器级PHP设置会不会覆盖域名级的,去「工具与设置>PHP设置」里看看服务器级的open_basedir有没有限制,确保域名级的设置是“追加”而非“替换”(部分版本里是选择「自定义值」还是「继承并添加」)。
2. 检查文件路径的权限
open_basedir只是允许PHP访问这个路径,但PHP进程的用户得有实际的读取权限才行:
- 先看你的PHP进程用的哪个用户,执行
ps aux | grep php,找到对应的进程用户(比如apache、nginx或者Plesk专属的psacln用户)。 - 然后检查目标目录的权限:
ls -ld /var/www/vhosts/rock.church/httpdocs/,确保这个用户对目录有读取和执行权限(权限至少是755),对文件有读取权限(644)。 - 如果是Plesk的独立域名用户,可能需要把两个域名的用户加入同一个组,或者调整目录的组权限。
3. 排查符号链接问题
如果/var/www/vhosts/rock.church/httpdocs/是一个符号链接(软链接),open_basedir检查的是实际指向的路径而不是链接本身。比如如果链接指向/home/rockchurch/public_html/,那你需要把这个实际路径也加入open_basedir才行。
4. 检查其他配置的优先级
有时候其他地方的配置会覆盖Plesk的设置:
- 查看服务器的主PHP配置文件(比如
/etc/php5.4/php.ini),看看里面有没有open_basedir的设置,如果有,确认Plesk的域名级设置是追加而非被覆盖。 - 检查站点根目录的
.htaccess文件,有没有php_value open_basedir的设置,如果有,要么删除这个设置,要么把目标路径加进去。
5. 清理缓存
PHP的OPcache或者Plesk的配置缓存可能会导致新设置没生效:
- 重启Apache服务:
service httpd restart - 如果用的是PHP-FPM,重启对应的服务:
service php5.4-fpm restart
按照这些步骤排查下来,应该能找到问题所在。
内容的提问来源于stack exchange,提问作者michaelespinosa
相关产品推荐
相关产品推荐

