我有以下文件结构:
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
尝试添加dirname(__FILE__)
的路径之前,如:
require(dirname(__FILE__).'/../../dir2/file3.php');
它应该包括从根目录开始的文件
为相对路径可以使用__DIR__
直接而不是dirname(__FILE__)
只要你正在使用PHP 5.3.0及以上 ):
require(__DIR__.'/../../dir2/file3.php');
请记住,在引号内的路径的开头添加额外的斜杠。
看到:
- PHP -与require_once /包括/需要,路径是相对于什么呢?
- PHP -相对路径“规定”
这里一个适当的建议,是从来没有使用这样的事情“../../”在你的web应用程序的相对路径。 这是难以阅读和可怕的维护。
正如你可以证明。 这使得它很难知道你是指向什么。
如果你需要改变你的应用程序,或部分的文件夹中。 这是完全容易出错,并可能会打破东西是可怕的调试。
相反, define
在引导文件的几个常数的主路径(一个或多个),然后使用:
require(MY_DIR.'/dir2/file3.php');
从那里移动您的应用程序,是在一个单一的文件替换您MY_DIR常数一样容易。
您可以随时使用$_SERVER['DOCUMENT_ROOT']
作为一个有效的起点,为好,而不是采取一个相对路径。 只是另一种选择。
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
我觉得你的CWD是DIR2。 尝试:
require("file3.php");
require("file4.php");