php包含其他php文件

时间:2010-06-12 13:27:16

标签: php include server-side-includes nested-includes

我现在变得非常混乱,我的大脑疼! :(笑)

根:

  • 的index.php

包括:

  • cat.php
  • dog.php

索引包括dog:include(“includes / dog.php”);

dog包括cat:include(“cat.php”);

当我运行索引时,对于cat,它说:

  1. 无法建立指向服务器的链接
  2. 拒绝用户访问...
  3. 然而,如果我跑狗,我没有遇到任何问题......

    我猜它的路径,但我试过./includes/cat.php没有快乐......

4 个答案:

答案 0 :(得分:5)

这是因为当您包含相对路径时,它相对于入口点(第一个PHP文件,由Web服务器调用)。

在狗身上,做

include(dirname(__FILE__) . '/cat.php'); // __FILE__ is always the name of the php file it's in

答案 1 :(得分:1)

这取决于您执行的脚本所在的位置。当您执行/index.php脚本路径设置为/时,所有包含都从那里开始。这意味着您可以找到/includes/dog.php,但无法找到/cats.php。请注意,即使您从cats.php脚本中包含/includes/dog.php,也不会更改原始执行路径。

另一方面,当您执行/includes/dog.php时,您的路径设置为/includes/,这就是PHP也可以找到cats.php的原因。

阅读Bart关于如何解决这个问题的评论。

答案 2 :(得分:1)

解决此问题的另一种方法是设置文件的包含路径,看看这个。

http://ve2.php.net/manual/en/function.set-include-path.php

答案 3 :(得分:0)

感谢这个好线程。

我用bart的答案来解决这个问题。但我在这里还有一个问题。

我很惊讶它甚至在没有使用dirname(__FILE__)的情况下在我的配偶系统中工作,所以我做了很少的研究并比较了两个php.ini文件。我注意到php.ini中的include_path参数没什么区别。

在我的php.ini中,它被设置为Pear目录。所以我评论说只是为了测试,并且我怀疑它是否奏效。这是当我意识到我们需要包含一些我不知道的文件夹或将其注释掉以便它采用默认值时。