这是我第一次将本地托管的PHP站点移动到托管服务。我的网站是使用 web 根目录之外的 inc 文件夹(包括数据库常量)构建的,因此在我的本地计算机上它位于
XAMPP/xamppfiles/htdocs/inc/
其余文件(包括 common/目录)位于
XAMPP/xamppfiles/htdocs/mydomain/
大多数页面调用
include_once "common/base.php";
住在里面
htdocs/mydomain/common/
并通过调用包含数据库常量
include_once $_SERVER['DOCUMENT_ROOT'] . "/inc/constants.inc.php";
在我的本地网站上,$_SERVER['DOCUMENT_ROOT'] 输出"Applications/XAMPP/xamppfiles/htdocs/",并找到 inc 文件。
不幸的是,在DotEasy网站上,找不到这些文件。如果我回显 $_SERVER['DOCUMENT_ROOT'],输出是"/home/myusername/public_html"。
我可以通过这个进入 inc/目录:
$temp_path = $_SERVER['DOCUMENT_ROOT'];
$temp_path = str_replace('public_html', '', $temp_path);
include_once $temp_path . "/inc/constants.inc.php";
但这是个好主意吗?我担心public_html文件夹中的常量有错吗?
不要使用 $_SERVER['DOCUMENT_ROOT']
.
相反,您应该定义基于一个文件的根目录,例如在配置文件中。
define('ROOT', __DIR__); //php >= 5.3
或
define('ROOT', dirname(__FILE__)); // php < 5.3
使用ROOT
作为包含其他文件的基础。