我在根目录中有一个文件index.php:
<?php
require_once "./include/common.php";
?>
并在include文件夹中输入common.php:
<?php
require_once "globalConfig.php";
?>
将globalConfig与common.php放在同一个文件夹中。树文件夹为:
XXX / index.php的
XXX /包含/的common.php
XXX /包含/ globalConfig.php
index.php正常运行。但是,如果我将文件common.php更改为:
<?php
require_once "./globalConfig.php";
?>
PHP显示警告,它无法找到globalConfig.php文件。有什么不同?我认为在“./”的情况下,最外部的包含文件(index.php)将在其当前目录中找到globalConfig.php。
答案 0 :(得分:3)
在index.php中添加
define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));
然后在common.php中包含这样的内容。
require_once BASE_PATH . '/includes/globalConfig.php';
这将找到确切的路径并对斜杠进行standerize,然后每次使用BASE_PATH
时,都会从你的htdocs的根目录中包含,即index.php。
答案 1 :(得分:1)
我认为路径(即“./”)是相对于 BASE 脚本,而不是它所包含的文件。出于这个原因,我通常在包含脚本时使用绝对路径。
答案 2 :(得分:1)
该路径相对于当前工作目录;在Web上下文(php-cgi)中,这是最初调用的脚本(直接启动而不是通过include
)的脚本所在的目录。
一个简单的解决方法:
require_once dirname(__FILE__) . '/foobar.inc.php';