Plesk服务器出现is_executable(): open_basedir限制问题求助
解决Plesk服务器中open_basedir限制导致的is_executable()错误
这个错误是典型的PHP open_basedir安全限制问题——你的网站脚本尝试访问/opt/plesk/php/7.2/bin/php这个文件,但该路径不在PHP允许的访问目录列表里。下面是几种可行的解决方法:
方法1:通过Plesk面板直接调整open_basedir设置
这是最直观的方式,适合不熟悉SSH操作的用户:
- 登录你的Plesk控制面板,定位到目标域名
rescuefirst.com的管理页面 - 进入「网站与域名」>「PHP设置」(不同Plesk版本可能位置略有差异,比如有的叫「PHP配置」)
- 在配置项中找到
open_basedir,将原有的值修改为:
(核心是把/var/www/vhosts/rescuefirst.com/:/tmp/:/mnt/:/opt/plesk/php/7.2/bin//opt/plesk/php/7.2/bin/追加到允许路径末尾) - 保存设置,Plesk通常会自动重启对应版本的PHP服务,之后刷新网站测试即可。
方法2:通过SSH手动修改PHP配置文件
如果面板里找不到open_basedir的编辑入口,可以用SSH登录服务器操作:
- 连接到服务器后,找到对应域名的PHP配置文件,通常路径是:
/var/www/vhosts/system/rescuefirst.com/etc/php.ini - 用文本编辑器(比如
nano)打开这个文件,找到open_basedir一行,修改为包含/opt/plesk/php/7.2/bin/的路径,比如:open_basedir = "/var/www/vhosts/rescuefirst.com/:/tmp/:/mnt/:/opt/plesk/php/7.2/bin/" - 保存文件后,重启对应版本的PHP-FPM服务,命令为:
(如果你的PHP版本不是7.2,把命令中的systemctl restart plesk-php72-fpm72换成实际版本号即可)
方法3:优化脚本路径调用(推荐)
如果你的脚本是硬编码了PHP二进制文件路径,可以考虑用PHP内置常量PHP_BINARY替代,这个常量会自动指向当前运行环境的PHP二进制文件路径,通常默认就在open_basedir允许的范围内。比如把代码中类似:
is_executable('/opt/plesk/php/7.2/bin/php');
的部分替换为:
is_executable(PHP_BINARY);
这种方式不需要修改服务器配置,更适配不同的Plesk环境。
注意事项
- 确认你使用的PHP版本是否为7.2,如果不是,要把路径中的
7.2替换成实际版本(比如7.4就是/opt/plesk/php/7.4/bin/) - 修改配置后如果问题依旧,可以检查是否有其他层级的配置覆盖了当前设置(比如服务器全局PHP配置、.htaccess中的设置)
内容的提问来源于stack exchange,提问作者ashokreddy arikatla
相关产品推荐
相关产品推荐

