php包含Windows上的路径

时间:2015-12-26 13:35:59

标签: php path include

我在Windows上使用PHP,几天了。我被指示的所有时间包括以下方式:

在index.php文件中:

require ('include/init.inc');

在“include”目录中,我说:

在init.inc文件中:

require ("workbench.inc"); 

但突然间不再有效。有一次我还必须在“init.inc”中指定目录。 为什么一直都在工作,突然间没有了?

1 个答案:

答案 0 :(得分:2)

来自PHP documentation:

  

根据给定的文件路径包含文件,如果没有给出,则包含   指定的include_path。如果文件中没有找到   include_path,include将最终签入调用脚本自己的   目录和失败前的当前工作目录

因此,current working directory(CWD)在包含其他文件时非常重要。它可以由getcwd()检索。

如果您的目录结构如下所示

rootdir/
    include/
        init.rc
        workbench.rc
    index.php

然后require('include/init.rc')仅在rootdir/是CWD或是搜索路径的一部分时才有效。同样,require('init.inc')假设CWD为rootdir/include/。由于当前工作目录可以更改,因此在PHP中使用更健壮的

是非常的
// in index.php
require(__DIR__ . '/include/init.rc');

// in workbench.rc
require(__DIR__ . '/init.rc');

然后require将独立于CWD工作。这是有效的,因为magic constant __DIR__被包含没有尾随目录分隔符的常量的文件的绝对路径所取代,例如

  • 位于index.php__DIR__D:\path\to\rootdir
  • 位于include/init.rc__DIR__D:\path\to\rootdir\include