PHP需要“./”的问题

时间:2010-09-07 10:28:07

标签: php include require-once

我在根目录中有一个文件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。

3 个答案:

答案 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';