2011-03-15 127 views
2

我继承了一些代码:文件路径需要

include('../cfg/db_setup.php'); 
require('./fpdf/fpdf.php'); 

我知道../cfg手段在当前目录开始,然后进入上一层,下到CFG目录。 ./fpdf是什么意思?我从来没有见过在文件路径中使用单个斜杠,并且似乎无法在我们的服务器上的任何位置找到fpdf目录,但代码正在工作,显然它在某处。

+0

当前目录。顺便说一句,这不是一个PHP包含的好习惯。您应该使用include(dirname(__ FILE __)。“../ cfg/db_setup.php”)来提供绝对路径,而不是与当前目录相关的路径(可能会通过多种方式改变) – AbiusX 2011-03-15 21:30:39

+0

我意识到这一点,谢谢。就像我说的,这是我继承的代码。在开始处理绝对路径之前,我需要找到所有参考文件。 – EmmyS 2011-03-15 21:46:30

回答

2

.被定义为当前文件夹。

因此,如果PHP脚本位于/path/to/script/,那么第二个语句将寻找/path/to/script/fpdf/fpdf.php

+0

谢谢。我不习惯处理相对路径。 – EmmyS 2011-03-15 21:50:55

0

./ - 这意味着在当前路径

2

./是当前目录。 ./fpdf/应该与包含文件位于相同的路径上,或者位于关闭php include_path的某处。

13

刚一说明。

相对路径不相对于当前的include_path。

相对路径,如。或../是相对于当前工作的目录。如果在CGI或命令行上运行脚本,或者另一个目录中的另一个脚本包含脚本,则工作目录不同。

因此理论上是不可能的,以确保其中这些路径指向不知道的上下文:P

可以肯定,如果PHP < 5.3:

include(dirname(__FILE__) . '/../cfg/db_setup.php'); 
require(dirname(__FILE__) . '/fpdf/fpdf.php'); 

如果PHP> = 5.3 :

include(__DIR__ . '/../cfg/db_setup.php'); 
require(__DIR__ . '/fpdf/fpdf.php');