我继承了一些代码:
include('../cfg/db_setup.php');
require('./fpdf/fpdf.php');
我知道../cfg意味着从当前目录开始,然后向上一级并向下进入cfg目录。 ./fpdf是什么意思?我从来没有在文件路径中看到过单点斜杠,并且似乎无法在我们的服务器上的任何地方找到fpdf目录,但是代码正在工作,显然它就在某处。
答案 0 :(得分:16)
只是一张纸条。
相对路径不是相对于当前的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');
答案 1 :(得分:3)
.
被定义为当前文件夹。
因此,如果PHP脚本位于/path/to/script/
,则第二个语句将查找/path/to/script/fpdf/fpdf.php
答案 2 :(得分:2)
./是当前目录。 ./fpdf/应该与包含文件在同一路径上,或者在php include_path之外的某个地方。
答案 3 :(得分:0)
./
- 这意味着在当前路径中