2010-06-12 192 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目錄。所以我評論說,只是爲了測試和我的奇蹟它的工作。這是當我意識到我們需要包含一些我不知道的文件夾或將其註釋掉以便它使用默認值時。

相關問題