PHP的require()的相对路径错误(PHP require() relative path e

2019-08-01 14:41发布

我有以下文件结构:

rootDIR
    dir1
        subdir1
           file0.php
           file1.php
    dir2
       file2.php
       file3.php
       file4.php   

file1.php需要从这样DIR2文件3和文件4:

require('../../dir2/file3.php')

file2.php需要file1.php是这样的:

require('../dir1/subdir1/file1.php')

但随后在文件1要求无法打开文件3和文件4(可能是由于路径亲戚关系)

然而究竟是什么原因,什么可以为我做的file2.php这样file1.php正常需要文件3和文件4

Answer 1:

尝试添加dirname(__FILE__)的路径之前,如:

require(dirname(__FILE__).'/../../dir2/file3.php');

它应该包括从根目录开始的文件



Answer 2:

为相对路径可以使用__DIR__直接而不是dirname(__FILE__)只要你正在使用PHP 5.3.0及以上 ):

require(__DIR__.'/../../dir2/file3.php');

请记住,在引号内的路径的开头添加额外的斜杠。

看到:

  • PHP -与require_once /包括/需要,路径是相对于什么呢?
  • PHP -相对路径“规定”


Answer 3:

这里一个适当的建议,是从来没有使用这样的事情“../../”在你的web应用程序的相对路径。 这是难以阅读和可怕的维护。

  1. 正如你可以证明。 这使得它很难知道你是指向什么。

  2. 如果你需要改变你的应用程序,或部分的文件夹中。 这是完全容易出错,并可能会打破东西是可怕的调试。

相反, define在引导文件的几个常数的主路径(一个或多个),然后使用:

require(MY_DIR.'/dir2/file3.php');

从那里移动您的应用程序,是在一个单一的文件替换您MY_DIR常数一样容易。



Answer 4:

您可以随时使用$_SERVER['DOCUMENT_ROOT']作为一个有效的起点,为好,而不是采取一个相对路径。 只是另一种选择。

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');


Answer 5:

我觉得你的CWD是DIR2。 尝试:

require("file3.php");
require("file4.php");


文章来源: PHP require() relative path error