1

我在根目录中有一个文件 index.php:

<?php
require_once "./include/common.php";
?>

和包含文件夹中的文件 common.php:

<?php
require_once "globalConfig.php";
?>

将 globalConfig 文件与 common.php 放在同一文件夹中。树文件夹为:

xxx/index.php

xxx/include/common.php

xxx/include/globalConfig.php

index.php 运行正常。但是,如果我将文件 common.php 更改为:

<?php
require_once "./globalConfig.php";
?>

PHP 显示一个警告,它找不到 globalConfig.php 文件。有什么区别?我认为在“./”的情况下,最外部的包含文件(index.php)将在其当前目录中找到 globalConfig.php。

4

3 回答 3

3

在你的 index.php 添加

define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));

然后在 common.php 中包含这样的内容。

require_once BASE_PATH . '/includes/globalConfig.php';

这将找到确切的路径并对斜杠进行标准化,然后每当您使用时,BASE_PATH总是从您的 htdocs 的根目录中包含,即 index.php。

于 2010-09-07T10:36:45.270 回答
2

路径是相对于当前工作目录的;在 web 上下文 (php-cgi) 中,这是最初调用的脚本(直接启动而不是通过 on 启动的脚本include)所在的目录。一个简单的解决方法:

require_once dirname(__FILE__) . '/foobar.inc.php';
于 2010-09-07T10:36:12.490 回答
1

我相信路径(即“./”)是相对于BASE脚本的,而不是它所包含的文件。出于这个原因,我通常在包含脚本时使用绝对路径。

于 2010-09-07T10:30:16.857 回答