【问题标题】:PHP 'include' issue - cannot seem to get include to work correctlyPHP 'include' 问题 - 似乎无法让 include 正常工作
【发布时间】:2013-06-09 03:13:21
【问题描述】:

我对 php 包含有一些麻烦。我有以下文件结构

htdocs

  • index.php
  • login.php

php_includes

  • db_conx.php
  • check_user_status.php

在 db_conx.php 文件中,我创建了一个变量 $number = 10;用于测试。

db_conx 文件包含在 check_user_status.php 文件中,代码如下:

include_once("db_conx.php");

这很好 - 即我可以回显 $number 并得到 10。

但是,我在 login.php 的顶部包含了 check_user_status.php 文件,其中包含以下代码:

include_once("php_includes/db_conx.php");

在此页面上,我无法在此页面上回显 $number (check_user_status.php)。

我需要在许多页面中包含这个脚本(因为它会检查用户是否登录)。我对路径做了什么奇怪的事情吗?

【问题讨论】:

    标签: php path include relative-path


    【解决方案1】:

    我认为你可以使用__DIR__魔法常数

    文件的目录。如果在包含中使用,则返回包含文件的目录。这相当于 dirname(FILE)。此目录名称没有尾部斜杠,除非它是根目录。 (在 PHP 5.3.0 中添加。)

    这将帮助您处理嵌套的包含文件,事实上文件路径将始终自动设置,您不必处理absolute paths

    【讨论】:

    • 您能给我一个包含 DIR 结构的示例吗?
    • @Mobaz 类似include __DIR__ . '/php_includes/db_conx.php';
    【解决方案2】:

    对于相对路径,您需要这样做。

    include_once("../php_includes/db_conx.php");
    

    打破这个。

    如果您在浏览器中点击该文件,您的当前工​​作目录最初将是 htdocs/。

    .. 将您备份到一个目录级别(因此该目录同时包含 htdocs 和 php_includes)

    然后你想跟随 php_includes 到 db_conx.php。

    当您在子目录中执行文件时,这将成为一个问题。假设你和一个page2.php到一个htdocs/subpages/

    现在,如果我们遵循相同的步骤,我们将不会到达相同的位置。

    更好的方法是获取相对于绝对位置的路径。我喜欢使用文档根目录(在你的情况下是 htdocs),所以:

     include($_SERVER["DOCUMENT_ROOT"]."/../php_includes/db_conx.php");
    

    将引用文件系统上的相同位置,无论它在哪里使用。

    【讨论】:

    • 这个答案提供了更好的细节。
    • 嗨 orangepill - 如果 php_includes 位于 htdocs 中,这会起作用吗?在那种情况下,我想我不需要“..”对吗?
    • 如果db_conx和check_user_status.php在同一个目录下?
    【解决方案3】:

    如果您的文件结构正确,假设 php_includes 不是 htdocs 中的目录,您需要这样做:

    include_once("../php_includes/db_conx.php");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      相关资源
      最近更新 更多