【问题标题】:PHP is including relative to the URL path and not the file path, how do you change this?PHP包含相对于URL路径而不是文件路径,你如何改变它?
【发布时间】:2010-12-27 17:12:24
【问题描述】:

我有一个 PHP 文件 /a/b/file.php 的行

require("../connect.php");

在connect.php中有一行

require("../config.inc.php");

这一切在我的本地服务器上运行良好。有一堆文件使用 connect.php,它们也都可以正常工作。

但是在托管站点 /a/b/file.php 会引发错误:

Fatal error: require() [function.require]: Failed opening required 
'../config.inc.php' (include_path='.:/usr/local/php5/lib/php') in
/******/connect.php on line 3

我怀疑即使connect.php 位于另一个文件夹中,它也会相对于/a/b 查找它。有没有 php.ini 设置来改变这个?

【问题讨论】:

  • config.php 在哪里?您的本地包含路径是什么样的?
  • config.inc.php 位于我的根 htdocs 文件夹中。 include_path='.:/usr/local/php5/lib/php.
  • 懒惰的解决方案是将根 htdocs 文件夹添加到包含路径。

标签: php include-path


【解决方案1】:

你为什么不使用类似的东西:

require( dirname(__FILE__).DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."connect.php");

这样您就可以避免在类 Unix 系统上开发应用程序并将其部署在 Windows 系统上时出现的问题,反之亦然。

【讨论】:

  • 太好了,谢谢。只是要指出,尽管您在“..”之前需要另一个 DIRECTORY_SEPARATOR
【解决方案2】:

我不知道是否有 php.ini 设置,但我通常使用 $_SERVER['DOCUMENT_ROOT'] 来作为我包含的文件。

require $_SERVER['DOCUMENT_ROOT']."/path/relative/to/document_root/file.php";

在某些情况下,相对路径更好,但大多数情况下,您要包含的文件将保留在同一个目录中。

【讨论】:

    【解决方案3】:

    通常我个人会创建一个名为global.php 的文件(位于项目的root 目录中),其中我define() 是一个常量,包括库等等。

    <?php
    // ...
    define('APP_INCLUDE_DIR', dirname(__FILE__) .'/');
    // ...
    ?>
    

    之后,我将该文件包含在位于同一目录中的所有其他文件中(例如 index.php 和 require('global.php')。现在所有内容都在该目录级别执行,您可以在包含的每个文件中使用常量 APP_INCLUDE_DIR .

    <?php
    require('global.php');
    
    // ...
    require_once(APP_INCLUDE_DIR .'a/b/c/connect.php');
    ?>
    

    例如,a/b/c/connect.php 可以这样写

    <?php
    // ...
    require_once(APP_INCLUDE_DIR .'a/b/config.inc.php');
    ?>
    

    【讨论】:

      【解决方案4】:

      检查 PHP.ini 文件中的 include_path。 http://php.net/manual/en/function.set-include-path.php

      例如,在我的本地服务器 (XAMPP) 上,它看起来像这样:`include_path .;C:\xampp\php\PEAR

      您也可以执行 phpinfo() 来查找。

      【讨论】:

        猜你喜欢
        • 2015-11-08
        • 1970-01-01
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 2012-06-19
        相关资源
        最近更新 更多