冲突包括具有相对路径的文件

时间:2012-10-17 03:06:30

标签: php include relative-path

我正在尝试在我的php脚本中动态包含。这是我的目录树:

-index.php
-sources/
--hello.php
--bye.php

在我的index.php中,我制作了一个包含hello.php:

include("sources/hello.php");

在我的hello.php我还有另一个包括:

include("bye.php");

当我访问index.php时,它会抛出错误说:

  

消息:   require_once(bye.php)   [function.require-once]:无法打开流:没有这样的文件或   目录

有没有办法让它运作但没有绝对路径?因为路径可以从一个目录更改为另一个目录,但保留结构:

-index.php
-sources/
--hello.php
--bye.php

3 个答案:

答案 0 :(得分:3)

使用

dirname(__FILE__);
像这样

include(dirname(__FILE__)."/bye.php");

答案 1 :(得分:1)

为什么不使用 getcwd()

index.php的内容:

include(getcwd() . "/sources/hello.php");

hello.php的内容:

include(getcwd() . "/sources/bye.php");

答案 2 :(得分:0)

由于“hello.php”包含在“index.php”中,“bye.php”需要包含在“hello.php”中,就好像它包含在“index.php”中一样。 像这样:

include("sources/hello.php");

但是,如果你想在所有地方包含“hello.php”而不仅仅是在“index.php”目录中,你可以在“hello.php”中设置一个变量,每次都给你一个正确的路径。 像这样:

$webroot = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/";
include($webroot."sources/bye.php");

OUTPUT -->http://website.com/sources/bye.php