13046685510

ThinkPHP5在宝塔面板中将根目录设置为public后报错的解决方法

由于ThinkPHP5的默认网站根目录是public目录,如果通过宝塔面板配置直接将该目录指为网站根目录后,会出现如下报错:


Warning: require(): open_basedir restriction in effect. File(/www/thinkphp5/thinkphp/start.php) is not within the allowed path(s): (/www/thinkphp5/public/:/tmp/:/proc/) in /www/thinkphp5/public/index.php on line 17

Warning: require(/www/thinkphp5/thinkphp/start.php): failed to open stream: Operation not permitted in /www/thinkphp5/public/index.php on line 17

Fatal error: require(): Failed opening required '/www/thinkphp5/public/../thinkphp/start.php' (include_path='.:/www/server/php/56/lib/php') in /www/thinkphp5/public/index.php on line 17


根据报错信息分析,一开始以为目录配置错误,但经过调整后,仍然报该错误。其实,该问题只需将宝塔面板中网站目录的“防篡改攻击”功能关闭即可。


具体解决方法是进入宝塔面板“网站”—“设置”—“网站目录”,将“放跨站攻击(open_basedir)”前面的勾去掉。如下图:


ThinkPHP5在宝塔面板中将根目录设置为public后报错的解决方法(图1)


保存后,重启PHP,再次通过浏览器访问即可。如下图:

ThinkPHP5在宝塔面板中将根目录设置为public后报错的解决方法(图2)


出现该问题的主要原因是:open_basedir 将PHP所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。

7x24小时服务专线 130-4668-5510
官方微信 关闭