今天在做一個MVC程式時 ,required路徑時報錯,再三感覺自己程式沒錯後走上了無盡的百度之路,不得不說百度解決方案都是千篇一律。這裡寫上我自己的問題;
不得不說解決問題這個問題前自己再三的去看看自己的程式寫對了沒有;
看看自己寫對了沒有;
再確定一遍自己的程式 邏輯思維。
重要的事情說三遍。。
比如我犯得錯誤。
這是我的檔案目錄:
我的index檔案中是這麼寫的:
<?php /** *程式入口檔案 */ //設定預設的入口檔案 $default_controller = 'Main'; $default_action = 'Index'; $current_controller = isset($_GET['c']) ? $_GET['c'] : $default_controller; $current_action = isset($_GET['a']) ? $_GET['a'] : $default_action; define('CONTROLLER', $current_controller); define('ACTION', $current_action); require 'Controller/'.CONTROLLER.'.class.php'; $controller_use = CONTROLLER . 'Controller'; $controller = new $controller_use(); $action_use = ACTION . 'Action'; $controller -> $action_use(); ?>
很明顯我聲明了一個預設的controller下的預設action方法
然後我預設的maincontroller裡這樣寫的:
<?php /** * 主控制器(預設控制器) * 顯示首頁 */ class MainController { public function IndexAction() { //require 'D:/PHP/wamp/www/myShop/View/index.html'; require '../View/index.html' ; } } ?>
看到這裡 大家知道為啥出錯了嗎。
很明顯(其實也不明顯,以前也沒寫到過) require中的路徑是應該跟index.php持平。應該與index.php持平。應該從入口檔案來判定路徑。應該為./View/index.html重要的事情說三遍,告誡下我自己,也告訴可能會犯錯的你們。
自此別再確定你自己的路徑一定對 ,再去把他確認一遍。
不行請試試絕對路徑能不能執行,能的話多半是你自己路徑問題。
如果真的不行的話,請試試以下方法。
以下方法是我在網上看了這麼多後的總結。建議按照順序執行。
1. 檔案夾不要用中文,因為設定檔的編碼模式不一定支援中文
2. PHP Failed opening required PHP沒有開放的要求 嘗試請給你的項目完全控制許可權
3. 網上提到的:去掉修改 common.inc.php裡所有 ‘./ 為 ’/ (就是把中間的點去掉),將”index.php”等根目錄的php檔案裡面的./include/….”裡的”./”完全刪除。就可以正常訪問。(未經測試慎用)
4. nclude_path=’.;C:\php5\pear’ 用wamp中的php安裝的路徑(檔案夾不用中文名)include_path=’C:\php5\pear’ 或在php.ini裡面有這一行,去掉句首的’;’,然後重啟WEB伺服器。;include_path = “.;d:\AppServ\www\ZendFramework-1.5.0RC1\library” (同樣未經測試 慎用 個人感覺沒有什麼原理)
最後兩項建議慎用,如果不能修改還是建議還原作業,畢竟是環境配置。
希望對你有所協助。。