我是PHP的新手,我一直试图让文件(index.php
)包含另一个文件(connect.php
),其中包含另一个文件(config.php
),但他们位于不同的文件夹中。
这是我的目录结构:
> index.php (in the [root]...)
> connect.php ([root]/admin/)
> config.php ([root]/admin/)
这是我到目前为止所做的:
的index.php
include './admin/connect.php'
connect.php
$directory = getcwd();
chdir(__DIR__);
include "config.php";
chdir($directory);
这实际上有效但不知何故我不喜欢更改工作目录的想法。
有没有更好的方法来实现我的目标?
答案 0 :(得分:1)
您可以将以下行放在index.php
的顶部<强>的index.php 强>
<?php
// Define native directory seperator.
define('DS', DIRECTORY_SEPERATOR);
// Define absolute project root.
define('ROOT', getcwd().DS);
// Define absolute admin folder
define('ADMIN_ROOT', ROOT.'admin'.DS);
include ADMIN_ROOT.'connect.php';
<强> connect.php 强>
<?php
include ADMIN_ROOT.'config.php';
答案 1 :(得分:0)
使用include();
时,内部的字符串会根据某些输入导致不同的位置。
+ /var/www/
- index.php
+ /var/www/admin/
- connect.php
- config.php
您可以通过提供包含文件名的字符串来引用同一文件夹中的内容。
// Include same-folder script
include('config.php');
// Include same-folder subfolder
include('admin/config.php');
您还可以使用正斜杠/
引用文件绝对位置,从而启动字符串,这将转到根目录。
include('/var/www/admin/connect.php');
在文件夹中,您可以使用字符串中的..
上传文件夹。
// Here it is redundant because you are exiting a folder and re-entering it.
include('/var/www/admin/../admin/connect.php');
您也可以使用代字号~
来引用您的用户主目录(无论哪个用户正在运行您的服务器软件)。
include('~/admin/connect.php');
使用简单的引用包含所需文件非常简单。
的index.php
<?php
// Here you need to go up a folder to reach the connect script.
include('admin/connect.php');
?>
/admin/connect.php
<?php
// Here config is in the same folder as connect, so it can be referenced as such.
include('config.php');
?>