获取php工作目录路径

时间:2014-09-10 06:52:40

标签: php

我的文件结构在这里

-www
  -myAppDirectory
     -init
        -connect.php
     -products
        -api.php

products / api.php 文件将包含 init / connect.php 文件,如下所示。

<?php
 include_once("./connect.php");

用户可以从浏览器调用api.php。

但它会发出警告

Warning: include_once(./connect.php): failed to open stream

我尝试使用它:

include_once($_SERVER["DOCUMENT_ROOT"] . "/connect.php");

但它会发出警告,

Warning: include_once(D:\init\www/connect.php): failed to open stream

4 个答案:

答案 0 :(得分:2)

使用绝对路径总是好的(干净且稳固)。

include_once(__DIR__ . "/../init/connect.php");

答案 1 :(得分:1)

尝试../输出产品目录,然后添加路径connect.php

include_once("../init/connect.php");

你也可以使用(未​​经测试)./作为root

include_once("./init/connect.php");

答案 2 :(得分:1)

include_once("./connect.php");

将检查父目录之外的文件,即产品之外的文件,并且在它之外没有任何文件 connect.php 。你必须使用

include_once("../init/connect.php");

答案 3 :(得分:0)

我尝试给出更详细的答案。

对于初学者,我想提及__DIR__ PHP: Magic constants

之一D:\init\www\myAppDirectory\products

它包含执行当前脚本的目录的路径。 在你的情况下,类似于:__FILE__没有结束斜杠(在Windows上)/反斜杠(linux等)

例如D:\init\www\myAppDirectory\products\api.php会给你include_once("../init/connect.php");

现在,如果您想要从相对较近的目录中包含文件,我更愿意使用:

DIRECTORY_SEPARATOR

(可能不是必需的但是)使用include_once(".." . DIRECTORY_SEPARATOR . "init". DIRECTORY_SEPARATOR ."connect.php");

也是一种很好的做法
dirname($path)

您还可以使用$myAppDir = dirname(__DIR__); // D:\init\www\myAppDirectory include $myAppDir . DIRECTORY_SEPARATOR . "init". DIRECTORY_SEPARATOR ."connect.php" 功能:

include

同样include_once可能比{{1}}更快,因为最后一个必须首先检查所包含的文件。

Why is require_once so bad to use?