PHP需要与 “./”
我在根目录下的index.php文件问题:PHP需要与 “./”
<?php
require_once "./include/common.php";
?>
,并在文件中的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。
在你的index.php添加
define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));
然后的common.php内包括像这样。只要您使用BASE_PATH
alsways从你的htdocs,即index.php文件的根目录包括
require_once BASE_PATH . '/includes/globalConfig.php';
这将找到的确切路径和standerize斜线,然后。
感谢,它是一个聪明的解决方案:) – coolkid 2010-09-07 10:40:43
由于str_replace将反斜杠转换为斜杠以削减它的windows和linux compat,所以我在每个项目中都使用它。不客气。 – RobertPitt 2010-09-07 10:48:23
我相信路径(即“./”)是相对于BASE脚本,而不是它所包含的文件。出于这个原因,我通常在包含脚本时使用绝对路径。
该路径相对于当前工作目录;在web上下文(php-cgi)中,这是最初调用的脚本(直接启动而不是通过include
)所在的目录。 一个简单的解决方法:
require_once dirname(__FILE__) . '/foobar.inc.php';
另请参阅http://stackoverflow.com/questions/1395909/php-include-all-paths-get-messed-up,http://stackoverflow.com/questions/3429780/include-and-path-problem ,以及搜索“php包含路径”的其他许多问题:) – 2010-09-07 10:43:09