【问题标题】:PHP - Relative paths "require"PHP - 相对路径“需要”
【发布时间】:2012-12-03 15:32:47
【问题描述】:

我的目录结构如下:

blog -> admin -> index.php
blog.php
db.php
functions.php

我一直在尝试includerequire,真的)blog.phpadmin/index.php,但面临很多错误。我正在学习 PHP 课程,并且讲师成功地完成了同样的事情。

管理员/index.php:

require "../blog.php";

这又需要在其目录中再添加两个文件。

require "db.php";
require "functions.php";

【问题讨论】:

  • 我认为您需要将其跨出一个级别,即。 ../../blog.php 假设 blog.php 不在 blog 文件夹中。
  • 我认为这行不通。 blog.phpblog 目录中。
  • 啊,你的目录结构符号让我很困惑 :-)

标签: php url path require relative-path


【解决方案1】:

如果您发现相对包含路径未按预期工作,快速解决方法是将 __DIR__ 添加到您尝试包含的路径的前面。

require __DIR__ . "/../blog.php";

相当干净,不需要修改包含路径或工作目录。

【讨论】:

  • 这行得通。谢谢!虽然我不知道为什么我必须这样做。教练成功地使用了require "../blog.php";。是因为操作系统差异吗?他在 Mac 上,我在 Windows 上。
  • 我实际上并不完全确定 - 我认为这与当前工作目录有关,并不总是与脚本目录匹配。
  • @Rafay:无论如何,这是一个不好的做法。你应该总是计算绝对路径,然后 require/include。
【解决方案2】:

你需要在你的 php.ini 中设置include_path

如果您想在运行时设置它,请使用set_include_path()

【讨论】:

    【解决方案3】:

    如果您在index.php 中包含此文件db.php and functions.php,那么您必须编写此代码

    require "../db.php";
    require "../functions.php";
    

    或者,如果您在 blog.php 中包含此文件,则编写此代码

    require "db.php";
    require "functions.php";
    

    【讨论】:

      【解决方案4】:

      我喜欢以chdir($_SERVER['DOCUMENT_ROOT']) 开始我的文件。这使我能够为我的所有包含获得一个很好且合乎逻辑的基本路径。

      【讨论】:

      • 这就是为什么在 php.ini 中有 include_path 指令的原因。
      • include_path 不适用于 file_exists 之类的东西;)
      • 每个 php 文件进行一次文件操作,没有实际用途。考虑使用 PSR-0 或使用 DIR
      猜你喜欢
      • 2012-04-21
      • 2018-03-26
      • 2014-09-05
      • 2015-02-23
      • 1970-01-01
      • 2013-08-06
      • 2012-05-25
      • 1970-01-01
      • 2015-07-15
      相关资源
      最近更新 更多