PHP:将脚本移动到另一个目录会弄乱它的包含
无论当前文件在目录结构中的位置如何,如何始终包含其他源文件?设置;这样,您的include将在当前脚本位置不变的情况下出现。设置;这样,您的include将在当前脚本位置不变的情况下出现。使用绝对路径而不是相对路径。最好在配置的某个地方使用baseURL设置。使用绝对路径而不是相对路径。最好是在配置文件中的某个地方使用baseURL设置。对于PHP项目,我总是为我的项目设置一个文档根目录,例如“/home/project”,然后包含相对于该文档根目录的所有包含。对于PHP项目,我总是为我的项目设置一个文档根目录,例如“/home/project”,然后包含与该文档根目录相关的所有包含项。要获得最佳的根目录路径,您应该在视图文件中定义一个常量,即(index.php),并使其跨平台兼容 在多年从事PHP和多平台应用程序的工作后,我发现实现这一点的最佳方法是结合使用以下原生PHP函数和常量:PHP:将脚本移动到另一个目录会弄乱它的包含,php,include,directory,Php,Include,Directory,无论当前文件在目录结构中的位置如何,如何始终包含其他源文件?设置;这样,您的include将在当前脚本位置不变的情况下出现。设置;这样,您的include将在当前脚本位置不变的情况下出现。使用绝对路径而不是相对路径。最好在配置的某个地方使用baseURL设置。使用绝对路径而不是相对路径。最好是在配置文件中的某个地方使用baseURL设置。对于PHP项目,我总是为我的项目设置一个文档根目录,例如“/home/project”,然后包含相对于该文档根目录的所有包含。对于PHP项目,我总是为我的项目设
- 定义
- stru_替换
- 肮脏的
\uuuuuuuuuuuuu文件
- 我们使用define的原因是允许文档根保持在全局范围内
的原因是将斜杠更改为跨平台兼容str_replace
- 之所以使用
,是为了帮助确定根视图文件的相对路径dirname
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\uuuuuu DIR\uuuuuu
,但是\uuuuuu FILE\uuuuuuu
更好,因为它支持以前版本的windows
完全合并后,您将拥有视图文件的有效相对路径
define("ROOT_PATH",str_repalce("\\","/",dirname(__FILE__)));
这将生成到索引目录的完美相对路径,而不带尾随斜杠,然后您应该像这样包含文件:
require_once ROOT_PATH . "/system/classes/some.class.php";
在windows中,
/
和\
都是有效的,而对于其他操作系统,它们只是/
,因此通常您应该始终使用/
作为目录分隔符来构建应用程序。要获得最佳的根路径,您应该在视图文件中定义一个常量,即(index.php)你应该让它跨平台兼容
在多年从事PHP和多平台应用程序的工作后,我发现实现这一点的最佳方法是结合使用以下原生PHP函数和常量:
- 定义
- stru_替换
- 肮脏的
\uuuuuuuuuuuuu文件
- 我们使用define的原因是允许文档根保持在全局范围内
的原因是将斜杠更改为跨平台兼容str_replace
- 之所以使用
,是为了帮助确定根视图文件的相对路径dirname
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\uuuuuu DIR\uuuuuu
,但是\uuuuuu FILE\uuuuuuu
更好,因为它支持以前版本的windows
完全合并后,您将拥有视图文件的有效相对路径
define("ROOT_PATH",str_repalce("\\","/",dirname(__FILE__)));
这将生成到索引目录的完美相对路径,而不带尾随斜杠,然后您应该像这样包含文件:
require_once ROOT_PATH . "/system/classes/some.class.php";
在windows中,
/
和\
都是有效的,而对于其他操作系统,它们只是/
,因此通常您应该始终使用/
作为目录分隔符来构建应用程序。在头文件中设置define变量。然后在需要时使用该定义变量
像
您可以定义$\u SERVER['DOCUMENT\u ROOT']来获取文档根路径。然后给出项目名称和该文件的路径。在头文件中设置define变量。然后在需要时使用该定义变量 像
您可以定义$\u SERVER['DOCUMENT\u ROOT']来获取文档根路径。然后给出您的项目名称和该文件的路径。使用单个入口点(例如,index.php始终是第一个加载的脚本),您的最佳选择确实是使用包含路径,并通过查找当前文件所在的目录来确定路径。这意味着您可以包含index.php文件中的相对文件,而无需使用常量。另一个好处是,当您移动所有脚本时,include_路径将设置为它的新位置。这是我要做的
<?php
set_include_path(
dirname( __FILE__ ) . DIRECTORY_SEPARATOR . get_include_path( )
);
?>
现在,如果您没有单一的入口点(例如,直接请求contact.php),那么最好使用配置文件,它将执行与上面相同的操作:更改include_路径。这样做的缺点是您必须在每个文件中都包含该配置文件,但好处是您可以移动这些文件,而无需更改任何内容。只需将上述代码放在config.php中,并将其包含在每个公开访问的文件中
还有第三种方法,这是我通常用于库文件的方法,因为您无法确定它是否会被使用,也无法确定它所在的目录。使用相对绝对的文件包含。我知道这听起来很有趣,但我想说的是,如果你包含这样的文件,你永远不会有问题:
<?php
require_once realpath( dirname( __FILE__ ) ) . '/exception.php';
使用单个入口点(例如index.php始终是第一个加载的脚本),您最好使用include路径,并通过查找当前文件所在的目录来确定路径。这意味着您可以包含index.php文件中的相对文件,而无需使用常量。奥特