【问题标题】:Diference between /../*.php and *.php/../*.php 和 *.php 之间的区别
【发布时间】:2013-09-13 06:01:09
【问题描述】:

所以我解决了一个 PHP 代码时遇到了这个问题,但我真的不知道它是如何工作的。

我尝试将其添加到每个文件中

<?php include '/nav.php'; ?>

所以我只能有一个文件来编辑导航栏而不是整个 php 文件。

当我将该代码添加到另一个文件夹(即/general/vision.php)的文件中时出现了问题,并且出现错误(找不到文件)。我认为这是因为我只有网站根目录下的“nav.php”文件。

所以,为了好玩,我把/general/vision.php文件的那句话改成了

<?php include '../nav.php'; ?>

它奏效了。我没有从根目录更改 nav.php,它起作用了。

我很高兴它做到了,但我不知道为什么。 /../ 是如何工作的? 是否在 PHP 文档中列出?

【问题讨论】:

标签: php include-path


【解决方案1】:

.. 是操作系统命名法“向上目录”。这与 PHP 无关。

看看相对路径的概念.. 可能会有所启发。 Relative paths vs Absolute paths.

【讨论】:

    【解决方案2】:

    .. 指父目录。这是所有操作系统的标准。

    【讨论】:

      【解决方案3】:

      PHP 是一种服务器端脚本语言,这意味着根目录/ 不是您网站的文档根目录,而是您的文件系统在服务器上的根目录。

      通过以/ 开头的路径,您指定了文件的绝对路径,从根目录开始。您可以从当前目录构建相对路径,例如使用.. 提升一级。

      您还可以在 PHP 中使用 __DIR__ 常量构建绝对路径,它始终包含包含当前 PHP 文件的目录的完整绝对路径,例如 include __DIR__ . '/../nav.php';

      【讨论】:

        【解决方案4】:

        虽然您通过在包含路径中包含 ..(父目录)解决了您的问题,但最好像这样包含 php 文件:

         include $_SERVER['DOCUMENT_ROOT']."/nav.php";
        

        然后,您可以将 PHP 文件保存在 DOCUMENT_ROOT 中的任何位置,并且仍然可以包含此 nav.php 文件。

        PS:最好将常见的包含文件保持在DOCUMENT_ROOT 以上的级别,这样浏览器就不能直接访问这些文件。

        【讨论】:

        • 实际上最好不要将要包含的文件放在网络服务器的文档根目录下。
        • @Gary:是的,我同意并且自己也遵循了这种做法。
        猜你喜欢
        • 2011-11-23
        • 2010-10-26
        • 2013-07-20
        • 2011-04-04
        • 2016-03-11
        • 1970-01-01
        • 2011-07-21
        • 2011-05-29
        • 2011-01-08
        相关资源
        最近更新 更多