【问题标题】:php question include an included filephp问题包括一个包含的文件
【发布时间】:2011-09-07 02:14:54
【问题描述】:

我遇到了关于在 PHP 中包含包含文件的问题。

项目

  • functions(文件夹)有一个.php
  • xml(文件夹)有b.xml
  • index.php

这是我的项目结构(抱歉,我无法发布图片)。 我尝试使用“index.php”来包含“a.php”,而“a.php”正在使用“b .xml"

这就是我在 XAMPP 上所做的,而且效果很好:

index.php 我写道:include 'functions/a.php';

a.php 我写道:$xml->load('xml/b.xml');

但是,如果我将这些复制到我的 Uni 的 apache 服务器,它就无法打开这个 b.xml。 这不是许可,因为当我更改为绝对路径时它可以工作......

提前谢谢你们:-)

【问题讨论】:

  • 使用包含时,通常最好从包含文件的路径加载文件,例如:$xml->load(dirname(__FILE__).'/../xml/b.xml');

标签: php xml file include


【解决方案1】:

在 a.php 中,如果你使用 include,你应该参考 ../xml/b.xml 问题是,它取决于 $xml->load() 的定义时间。如果它是您自己的代码,则将路径相对于定义。否则“../xml/b.xml”应该可以工作。

您总是可以使用 $_SERVER['DOCUMENT_ROOT'],但我自己喜欢将目录定义为常量(使用绝对路径)并在项目中使用它们。

define('DIR_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/');
define('DIR_FUNCTIONS', DIR_ROOT . 'functions/');
define('DIR_XML', DIR_ROOT . 'xml/');

【讨论】:

  • 我也会这样做,使用绝对路径更容易。但是,我会使用dirname(__FILE__) 而不是$_SERVER['DOCUMENT_ROOT']。如果使用 PHP 5.3.0(或更高版本),__DIR__ 与上述相同。
  • 我尝试了您的解决方案,但不起作用我认为这个特定问题是因为我的 uni 的服务器配置。每个学生都有一个帐户,我们将 php 项目放在帐户的 .HTMLinfo 目录中。但是,服务器根目录位于不同的目录中,因此我无法使用关于 $_SERVER['DOCUMENT_ROOT'] 的绝对路径,但如果使用我的个人帐户的绝对路径,它可以完美运行......这不是我想要的使用...谢谢您的回复
  • 您可以执行 dirname(__FILE__) 来查看如何处理主项目目录中的文件,应该可以解决问题
  • 谢谢大家,终于解决了问题。我使用 dirname(FILE) 并附加一些其他字符串作为加载 xml 文件的绝对路径。
【解决方案2】:

尝试使用set_include_path() 将包含路径设置为应用程序的根目录;那么您应该能够包含与此路径相关的文件。

【讨论】:

    【解决方案3】:

    使用绝对路径总是更好,即使你必须构造它(例如$XML_PATH = $PATH_TO_BASE . 'xml/b.xml';

    如果你不能这样做,你应该将 xml 的父级添加到你的路径中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      相关资源
      最近更新 更多