我在许多不同的php文件中都有一个PHP文件。
PHP文件存储数据库信息,还需要另一个名为something.php ....
的文件现在,我说我在名为my_db_info.php
的文件夹中存储了名为config
的PHP文件(包含数据库信息)。
然后我有另一个PHP文件存储在config
文件夹上方的两个文件夹中,名为all_functions
。现在要求带有db info的文件我写require('folder1/config/my_db_info.php');
现在这需要my_db_info.php正常但是my_db_info.php(something.php)中所需的文件将不会包含在内,这将导致致命的错误。 / p>
所以当我在all_functions
文件夹中测试php时,我收到致命错误,告诉我无法找到实际db文件(my_db_info.php)中所需的文件(something.php)。 / p>
然后,当我更改my_db_info.php
文件并更改需求行以减少其上升或下降的文件夹数量时,例如:
require('../something.php');
要
require('../../something.php');
似乎有效。但我必须将文件夹的上/下计数更改为主文件(在all_functions
文件夹中)的内容。好像我在那个文件中要求something.php
......
这意味着,当我想要my_db_info.php
到另一个文件时,该文件位于与all_functions
文件夹(例如5个文件夹)中的文件完全不同的位置时,我将不得不制作另一个my_db_info.php使其正常工作....
为什么会发生这种情况,有什么办法可以解决这个问题吗?
由于
答案 0 :(得分:1)
对我而言,对你来说,最简单的事情就是直接包含PHP文件而不是给出相对路径(这就是你如何包含它们)。
尝试使用$ _SERVER ['DOCUMENT_ROOT'](这会给你/ home / username / htdocs这样的东西)
如果我理解你的设置正确,你在目录中有以下2个目录(可能在根目录中):
/
/all_functions
/config
而不是包含多个include("../my_db_info.php");
更改为include($_SERVER['DOCUMENT_ROOT']."/config/my_db_info.php");
,并根据需要重复其他目录。
如果你这样做,它将适用于远离config + all_functions目录所在的多个目录。
修改(回复评论)
如果$_SERVER['DOCUMENT_ROOT']
不可用,那么您可以随时手动编写文档根目录,然后将其定义为常量,然后在每个脚本中调用它。
例如
define(rootpath, "/home/username/htdocs");
include(rootpath."/config/my_db_info.php");
然后,如果需要,您可以在rootpath
(等)中使用my_db_info.php
作为已定义的常量,缺点是您必须在每个脚本中写入此内容 - 尽管手指越过$_SERVER['DOCUMENT_ROOT']
1}}可供您使用。
答案 1 :(得分:0)
2021 年更新
现在我更喜欢将 namespace
与 autoload
一起使用,而不是传统的导入。
<?PHP
namespace Whatever;
class Important {...}
<?PHP
use App\Whatever;
$important = new Important();