php:包含问题的路径。无法从两个页面到达文件

时间:2013-10-20 18:02:52

标签: php

我正试图达到这样的文件:

index.php
php/page.php
xml/file.xml

的index.php:<? include 'php/page.php'; ?>
page.php:<? $xml = simplexml_load_file("xml/file.xml"); ?>

如果我打开index.php,这可以正常工作。但如果我打开page.php,则会显示错误。 “无法找到文件php/xml/file.xml

我知道我可以使用../,但它会在page.php而不是index.php中正常工作 任何想法我怎么能解决它? (使两页都能正常工作)
感谢名单
此致

2 个答案:

答案 0 :(得分:1)

我不知道<? include 'page.php'; ?>应该在index.php中工作,因为该文件位于下面的文件夹中。

如果是这种情况,include函数似乎可以检查子目录是否找不到该文件。假设是这种情况,page.php将无法找到file.xml,因为它不在树下面,但实际上是兄弟姐妹。该函数无法开始随机遍历您的文件结构,因为它可能会找到并包含您不想要的同名文件。

修改

更新的代码更有意义。您的包含正在查找当前文件夹中的文件夹。 <? $xml = simplexml_load_file("xml/file.xml"); ?>正在xml文件夹中查找名为php的文件夹,因为这是从中调用的位置。您需要的是<? $xml = simplexml_load_file("/xml/file.xml"); ?>,它会在根目录中查找名为xml的文件夹,注意/的添加。

答案 1 :(得分:1)

消除该问题的最简单方法是使用包含xml的点的相对路径。所以在page.php中粘贴:

$xml = simplexml_load_file(__DIR__.'/../xml/file.xml');