Php 如何使用相对于文件所在位置的路径包含文件?
假设我在父目录中有两个目录,foo和bar,这些目录包含一些PHP文件:Php 如何使用相对于文件所在位置的路径包含文件?,php,Php,假设我在父目录中有两个目录,foo和bar,这些目录包含一些PHP文件: / /index.php /foo /foo/functions.php /foo/stuff.php /bar /bar/doodie.php 比如说: functions.php包括stuff.php index.php包括functions.php doodie.php包括functions.php 基于这种结构,运行index.php时,它将在/foo目录中查找/foo/functions.php但是,stu
/
/index.php
/foo
/foo/functions.php
/foo/stuff.php
/bar
/bar/doodie.php
比如说:
functions.php
包括stuff.php
index.php
包括functions.php
doodie.php
包括functions.php
index.php
时,它将在/foo
目录中查找/foo/functions.php
但是,stuff.php
必须根据index.php
的位置使用相对路径包含。在运行index.php
的情况下,这是有效的调用doodie.php
时,它不起作用,因为functions.php
在/foo
目录中查找stuff.php
,当位置为/bar
时,该目录不存在
是否可以根据文件的驻留位置而不是调用位置来包含文件,而不使用绝对路径(和)
如果这不清楚,我很抱歉,这真的很难描述…您应该使用绝对路径
当然,您不需要每次都包含完整路径。通常的过程是定义一个名为APP_PATH的常量,并在引导中设置应用程序的绝对路径
之后,无论何时您想要包含一个文件,都要在include调用中附加APP_PATH常量。这会解决你的问题
您还可以查看include_path选项,这取决于文件的位置-您可以这样做:在基本文件夹中创建一个文件;在此文件中定义这些变量
定义('root',服务器['DOCUMENT_root']);这将确保获得根文件夹
定义('foo',root./foo/');这定义了foo文件夹的路径
定义('bar',root./bar');这定义了bar文件夹的路径
现在,在您需要调用的任何文件中,包括基本文件,并且您可以访问这些文件夹中的任何文件
因此,如果您已经在/bar/doodie.php中,只需包含(foo.'functions.php'),反之亦然
希望这能有所帮助。我建议你走MVC的路线。这很容易,但也很可靠。只需将所有请求重定向到根目录中的index.php?path=database.php(比如bootstrap.php)形式的一个文件,然后定义路径。下面是我在自制的MVC框架中使用的文件示例
/**
* BASE_PATH is for server side inclusions.
* BASE_URL is for client side inclusions (scripts, css files, images etc.)
*/
define("DS", DIRECTORY_SEPARATOR);
define("BASE_PATH", dirname(realpath(__FILE__)).DS);
define("BASE_URL", dirname(realpath($_SERVER["SCRIPT_NAME"])).DS);
define("APP_PATH", BASE_PATH."application".DS);
//$url = $_GET['base_url'];
/**Include core file which loads all necessary files */
require_once (BASE_PATH."core".DS."core.php");
这里是core.php(只有一行,因为它有很多行)
由于某种原因,它不允许我发布。约翰普说,基本上说了我要说的一切。祝你好运我理解此解决方案,但我在哪里存储APP_PATH常量?当从不同的地方调用时,它不会产生相同的问题吗?@Ozbekov绝对路径的唯一目的是“当从不同的地方调用时,不会产生相同的问题”。之所以称为“绝对”,是因为您知道为什么PHP不使用前导斜杠来创建相对于文档根的路径吗?例如,当在网站上发布图像URL时,这种方法就起作用
include'/index.php'
@mrtsherman php向文件系统致敬。PHP可以而且经常访问文档根以外的内容。@mrtsherman,因为就浏览器而言,这是域的绝对路径,与Web服务器文件系统分离。
//Load config files
require_once(BASE_PATH."config".DS."config.general.php");