2012-06-21 57 views
0

我正在一個客戶端網站(PHP)上工作,並有一個非常奇怪的行爲。使用include,include_once,require或require_once似乎也吸引了其他根本不應該存在的內容。有沒有人聽說過這樣的事情?PHP包含奇怪的行爲

即使包含文件爲空或僅包含一些文本,行爲仍然存在。這可能是某種設置/全局行爲嗎?

謝謝

例如:

<?php require_once('dir/subdir/file.php'); ?> 
+1

您能否包含一些示例代碼? –

+0

沒有人可以通過猜測你正在嘗試做什麼來幫助你。顯示一些代碼並詳細說明「其他內容」是什麼。 – Repox

+0

我有一些有趣的經驗,包括和輸出緩衝 - 你使用緩衝區? – HorusKol

回答

0

你應該總是使用絕對路徑。這是引用文件的唯一可靠方法。

<?php require_once(__DIR__ . '/dir/subdir/file.php'); ?> 

或者對PHP 5.2:

<?php require_once(dirname(__FILE__) . '/dir/subdir/file.php'); ?> 
0

的包括通過複製所需的文件到被調用的函數的佔位符的內容/ require函數的工作。如果包含的文件爲空,則複製內容爲空。如果您的內容中包含了您不認識的內容,那麼可能意味着您的包含路徑可能指向了其他位置,而不是您想要的位置,或者包含的文件在其中包含了一些額外的文件。

作爲全局設置,在php.ini中指定了全局php include path,其中人們通常會添加庫或全局腳本。默認情況下,它不應該包含影響腳本的內容。

如果在include_path沒有找到文件,包括最終將在調用腳本本身的目錄和失敗之前,在當前工作目錄檢查。