2010-06-12 144 views
1

现在我变得非常混乱,我的脑子受伤了! :(笑php包含了另一个php文件

根:

  • 的index.php

包括:

  • cat.php
  • dog.php

指数包括狗:inc路得( “包括/ dog.php”);包括(“cat.php”);

当我运行指标,猫,它说:

  1. 到服务器的连接不能建立
  2. 访问被拒绝的用户...

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

我猜它的路径,但我试过./includes/cat.php到没有喜悦...

回答

5

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

在狗,做

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

yup,你是包括文件a/c dog.php的Emma,但是你应该包含一个/ c index.php。只是想像dog.php将粘贴在index.php并使用你的路径A/C – nik 2010-06-12 13:37:06

+0

感谢巴特。希望这会解决它。我需要先清理一些位... Nik - 我不确定我是否遵守,对不起。你的意思是我应该从索引中包括狗和猫,然后不用担心这些包括? – Emma 2010-06-12 13:40:26

1

这要看剧本正在执行的谎言上。当您执行/index.php时,脚本的路径设置为/,因此全部包括从那里开始。这意味着你可以可以找到/includes/dog.php,但不可能找到/cats.php。请注意,即使您的/includes/dog.php脚本包含cats.php,这也不会更改原始的执行路径。

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

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

0

感谢您的这个漂亮的线程。

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

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

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

相关问题