php - 麻烦与/或 ./vs ../和绝对和相对路径

标签 php

我有很多PHP文件

/
/client/
/user/
/config/
etc...

我希望我的所有文件都包含 /user/codestart.php。 (很多功能等)

因此:

  • /中的所有文件都有include("./user/codestart.php");
  • /user/ 中的所有文件都有 include("codestart.php");
  • /client/ 中的所有文件都有 include("../user/codestart.php");

问题是 /user/codestart.phpinclude("../config/config.php"); (MySQL ID 和密码)

/中的文件运行时,如/index.php,它包含./user/codestart.php。 然后/user/codestart.php包含../config/config.php,但是它看不到它,因为它认为它是从/<调用它,而不是来自 /user/

如果我改变 include("../config/config.php")包含(“./config/config.php”)/ 文件修复它,但为 /user//client/ 文件打破它。

底线是,当一个 PHP 文件包含另一个文件时,PHP 认为它是从原始文件的位置而不是调用文件的位置运行。

我需要使用相对路径,而不是绝对路径。绝对路径在我的情况下不起作用。

有什么办法可以解决吗?

最佳答案

处理这个问题的一种方法是:

  • 有一个中央配置文件(例如 /myproject/config/bootstrap.php

  • 在该配置文件中,为您的应用程序定义一个全局根目录。例如

    define("APP_ROOT", realpath(dirname(__FILE__)."/.."));
    
  • 在每个 PHP 文件中包含该配置文件。例如

    include("../config/bootstrap.php");
    
  • 每当你引用其他文件时,使用

    include APP_ROOT."/includes/somefile.php";
    

瞧 - 你在空间中有一个固定点 (APP_ROOT) 并且可以引用与它相关的所有内容,无论你在哪个目录中。

关于php - 麻烦与/或 ./vs ../和绝对和相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098139/

相关文章:

PHP MySQL : Redirecting Users ERROR

php - 图片位置中断响应

php - laravel 5 中的 Ajax post 请求返回错误 500(内部服务器错误)

php - mysql查询获取两个给定日期之间的结果

php - php 表单提交按钮不起作用

php - 选择 - 行换列可以吗?

php - 使用 preg_replace 将一个字符的多个实例转换为一个 (aa = a)?

php - 如何使用 mpdf php 类定义表格的高度

php - 在循环中的 2 个 <tr> 上显示自定义标题

php - MySQL 表到 xml 文件 : update files when tables are updated