2011-09-29 239 views
0

這裏是我的文件夾結構,例如:require_once路徑無法找到文件?

source files/ 
    controller/ 
     ctrl_showData.php 
    model/ 
     Database.class.php 

假設它現在是在控制器的目錄,並在ctrl_showData.php,我想要求Database.class.php,所以我嘗試:

require_once(dirname(__FILE__) .'/../model/Database.class.php'); 

但是當我調試時,程序停止執行上面的語句時,我猜它找不到文件。我已經閱讀過類似的問題並嘗試過他們的解決方案,但都沒有成功任何人都可以幫忙?謝謝! 這裏是回聲結果:

/controller/../model/Database.class.php 

顯然,它不走的父目錄,這是源文件/,然後進入模型/,但不知道爲什麼?

感謝您的錯誤消息的建議,該錯誤信息是:

Warning: require_once(config/config.php): failed to open stream: No such file or directory in /model/Database.class.php 

因爲我還需要在數據庫文件中的config.php文件,它的路徑是不正確的。我沒有想到,謝謝你的幫助!

+3

完整路徑的結果是什麼?你可以顯示它,而不是要求?...無論如何,如果它找不到文件,它不應該失速,但會引發致命錯誤 –

+1

要** Pekka的**點,'echo dirname(__ FILE__)。'/ ../ model/Database.class.php';'看看它是否是預期的路徑。 –

+0

require_once看起來不錯...請發佈錯誤消息。 – madflow

回答

3

試試這個:

require_once(realpath(dirname(__FILE__) . '/..') . '/model/Database.class.php'); 
0

您可以使用相對路徑,因此採用這種(下)應該只是被工作:

require_once('../model/Database.class.php'); 
+0

如果他正在執行此操作的文件包含在另一個目錄中的另一個文件中,則不會。 –

+0

@Pekka甚至可以工作,因爲PHP接受相對路徑來形成每個文件 –

+0

沒有。路徑總是相對於當前工作目錄。如果您在另一個目錄中包含文件,則後者將成爲工作目錄。 –

0

嘗試包裹在真實路徑()http://us.php.net/manual/en/function.realpath.php

打電話如果你的路徑不正確解析它將返回null,並清除你在中間的相對路徑混亂。

+0

我試過這個: require_once(realpath(__ DIR __)。'/ ../model/Database.php'),但仍然相同。 – user878729

+0

如果你<?php echo realpath(dirname(__ FILE__)。'/ ../model/Database.class.php'),你會得到什麼? ?>? –

1

你可以嘗試使用:

include('./model/Database.class.php') 
+0

如果他正在執行此操作的文件包含在另一個目錄中的另一個文件中,則這不起作用。 –

+0

它似乎工作。現在程序在執行時不會停頓。謝謝! – user878729

+0

程序沒有停頓,但它沒有包含數據庫文件,因爲當我嘗試初始化數據庫對象時,它會再次停頓。 – user878729

0

什麼是你錯誤的錯誤日誌?你有沒有說文件無法找到?你有錯誤嗎?

用途:

error_reporting E_ALL 
ini_set('display_errors', 1); 

然後看看是什麼錯誤。如果你的錯誤真的是關於包含丟失的文件,請檢查路徑是否正確,並檢查包含路徑是否正確。你可以通過錯誤已經刪除了「。」在include_path指令或CMS中可能會這樣做,如果它想限制您使用自動加載器。

另一個想法是在您的文件中退出('BLA')並再次調用您的頁面以查看BLA是否出現,如果是,則表示您的文件已包含,但其中存在錯誤,這就是爲什麼您失速。

相關問題