windows上的php包含路径

windows上的php包含路径,php,path,include,Php,Path,Include,我在Windows上使用PHP,只需几天时间。我被指示的全部时间包括以下方式: 在index.php文件中: require ('include/init.inc'); 在“包括”目录中,我声明: 在init.inc文件中: require ("workbench.inc"); 但突然间,它不再起作用了。我必须同时在“init.inc”中指定目录。 为什么它一直在工作,却突然不工作了?来自 文件是根据给定的文件路径包含的,如果没有给定文件路径, 指定的包含路径。如果在中找不到该文件 inc

我在Windows上使用PHP,只需几天时间。我被指示的全部时间包括以下方式:

在index.php文件中:

require ('include/init.inc');
在“包括”目录中,我声明:

在init.inc文件中:

require ("workbench.inc"); 
但突然间,它不再起作用了。我必须同时在“init.inc”中指定目录。 为什么它一直在工作,却突然不工作了?

来自

文件是根据给定的文件路径包含的,如果没有给定文件路径, 指定的包含路径。如果在中找不到该文件 include\u路径,include将最终检入调用脚本自己的 目录和失败前的当前工作目录

因此(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工作。这之所以有效,是因为将替换为包含常量的文件的绝对路径,例如,该文件不带尾随目录分隔符

  • index.php
    中,
    目录是
    D:\path\to\rootdir
  • include/init.rc
    中,
    目录是
    D:\path\to\rootdir\include

你必须更明确一点。您是在Apache上使用PHP还是在CLI上使用PHP?您的目录结构是什么?我使用Eclipse并使用XDebug。该应用程序已配置,并作为CLI应用程序运行,但我也安装了wamp,wamp服务器仍在运行。目录结构非常简单。我有一个根目录和一个include目录。当我将代码放入“include/init.inc”时:设置“include”路径(get\u include\u path().path\u分隔符。“D:\…我的路径…\include”);那么它工作得很好。但直到今天它才是必要的。。。