1

我现在真的很糊涂,我的脑痛!:( 哈哈

根:

  • 索引.php

包括:

  • 猫.php
  • 狗.php

索引包括狗:include("includes/dog.php");

狗包括猫:include("cat.php");

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

  1. 无法建立到服务器的链接
  2. 用户访问被拒绝...

但是,如果我跑狗,我没有问题......

我猜它的路径,但我试过 ./includes/cat.php 不高兴......

4

4 回答 4

5

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

在狗身上,做

include(dirname(__FILE__) . '/cat.php'); // __FILE__ is always the name of the php file it's in
于 2010-06-12T13:30:37.717 回答
1

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

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

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

于 2010-06-12T13:38:33.313 回答
1

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

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

于 2010-09-28T15:55:16.420 回答
0

感谢这个好线程。

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

我很惊讶即使没有使用它也能在我伴侣的系统中工作, dirname(__FILE__)所以我几乎没有研究并比较了两个 php.ini 文件。include_path我注意到php.ini中的参数几乎没有区别。

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

于 2011-12-30T07:55:49.600 回答