2014-04-25 40 views
0

好的,Laravel的新手。我用作曲家下載laravel。它創建一個目錄結構像...由於ClassLoader和不正確的作曲文件,Laravel Controller加載文件

vendor\laravel\laravel\app 
    vendor\laravel\laravel\bootstrap 
    vendor\laravel\laravel\public 
    vendor\laravel\framework\.... 
    vendor\laravel\laravel\composer.json 

與其他許多供應商和laravel目錄一起。

以及我的初始composer.json文件位於根目錄中的位置。

我感動的供應商的內容\ laravel \ laravel目錄頂端水平,使我有一個目錄結構是怎樣的?

app\... 
    bootstrap\... 
    public\... 
    vendor\laravel\framework\... 
    composer.json 
    vendor\ many other directories... 

我更新了index.php文件目錄,以便它指的bootstrap \ autoload.php和bootstrap \ start.php目錄的新位置。

我可以加載index.php,我得到Laravel圖像映射表示所有工作。

所以,現在我去修改routes.php文件是...

Route::controller('home', 'HomeController');

並嘗試加載主目錄。我得到的錯誤...

"include(D:\dev\wamp\www\ltest3\vendor/laravel/laravel/app/controllers/BaseController.php): failed to open stream: No such file or directory" 

的問題是,供應商\作曲家\ autoload_classmap.php仍然有舊laravel \程序控制器映射。例如

return array(
    'BaseController' => $vendorDir . '/laravel/laravel/app/controllers/BaseController.php', 
    'DatabaseSeeder' => $vendorDir . '/laravel/laravel/app/database/seeds/DatabaseSeeder.php', 
    'HomeController' => $vendorDir . '/laravel/laravel/app/controllers/HomeController.php', 

,而不是在/應用/控制器的新位置/

如果我試圖在我的根目錄下的composer.json運行作曲家更新,我以後一段時間的處理得到錯誤...

Failed to execute git status --porcelain --untracked-files=no   

所以,不知道如何讓作曲家更新自動加載類圖以使用我的新目錄位置。

人們通常會將vendor \ laravel \ laravel目錄放在原始位置嗎?

似乎作曲家可能會嘗試再次更新laravel目錄,但不知道,因爲我得到的錯誤。

這是我在根目錄下的完整composer.json。這是最初在vendor \ laravel \ laravel目錄中創建的,並且由其他初始作曲家運行創建的,也許這就是問題所在。

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "require": { 
     "laravel/framework": "4.1.*" 
    }, 
    "autoload": { 
     "classmap": [ 
      "app/commands", 
      "app/controllers", 
      "app/models", 
      "app/database/migrations", 
      "app/database/seeds", 
      "app/tests/TestCase.php" 
     ] 
    }, 
    "scripts": { 
     "post-install-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-update-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-create-project-cmd": [ 
      "php artisan key:generate" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist" 
    }, 
    "minimum-stability": "stable" 
} 
+0

您是如何最初創建項目的?因爲這是一個時髦的目錄結構。您的項目根目錄應該具有類似於[Laravel的默認應用程序結構](https://github.com/laravel/laravel)的結構,以及包含所有依賴關係的供應商文件夾。 –

+0

您不應該碰到供應商目錄,就像下一個'composer update'一樣,以前的任何更改都會被覆蓋。你用來創建該項目的命令是什麼? – user2094178

+0

我創建了一個簡單的composer.json,其中需要laravel/laravel:v4.1.27在我的頂級目錄中,然後運行作曲者(從NetBeans IDE)。它使用laraval \ laravel \ app \ ... laraval \ laravel \ bootstrap \ ... laravel \ framework \ ....目錄創建了一個非常廣泛的供應商目錄。目錄結構如鏈接所示,但位於供應商目錄中。有沒有頂級應用程序\ ... boostrap \ ...創建 – Ron

回答

0

得到它的工作,感謝Cryode和user2094178指出我的目錄結構是不正確的開始。我將討論我碰到的幾個問題,希望能幫助那些可能有同樣問題的人。 fyi,這是在運行WAMP的Windows 7上。

我覺得哪裏出了問題,我試圖通過創建一個需要laravel的composer.json文件來安裝Laravael。在運行composer時,它並不知道我希望Laravel成爲我的主項目框架,所以它只是將Laravel的所有內容都安裝在vendor目錄中。沒有頂級應用程序,引導程序,公共目錄等。

廢棄此安裝並使用http://geekanddummy.com/how-to-laravel-4-tutorial-part-1-installation/(例如,ran作曲家創建項目laravel/laravel)中指定的說明從頭開始。進入以下問題...

1)composer/git抱怨https問題。作曲家繼續在每次下載時發出警告,但繼續使用http下載文件。當它得到symfphony filesystem.git,它有一個致命的錯誤

Failed to clone [email protected]:symfony/Filesystem.git via git, https, ssh protocols, aborting 

要解決此我跑一個小的PHP腳本,輸出phpinfo()函數。確定我的php.ini文件的位置並刪除了「extension = php_openssl.dll」的註釋。我已經爲WAMP和Apache做了這些,但是在命令行中發現PHP使用了不同的php.ini。2)在命令中使用「ssh [email protected]」測試了git和ssl線。有一個問題,它無法驗證,權限被拒絕。新增環境變量HOME,將其設置爲..

集HOME =%HOMEPATH%

在此之後,SSH工作和github上成功添加SSH密鑰。

3)刪除整個項目目錄並從頭開始,沒有看到恢復和繼續的方法。接下來的問題是,當檢索symfony/Filesystem.git時,我得到了一個git錯誤「超過了300秒的超時時間」。通過添加以下作曲家環境變量來修復此問題。

set COMPOSER_PROCESS_TIMEOUT=2000 

4)刪除整個項目並從頭開始重新開始。這次所有的下載都很好。我有頂級應用程序,引導程序,公共和供應商目錄。加載laravel \ public \ index.php的作品,我看到「你已經到了」頁面。

0

無論它們屬於Laravel還是屬於第三方,所有供應商文件都應位於同一位置/供應商。這不僅僅是自舉映射的一大堆,但是這對於何時需要更新作曲家的任何軟件包非常重要。你可能需要在一個微妙的環境中做到這一點,爲什麼不保持它應該是?有理由嗎?

Composer用於許多其他框架,我相信在所有這些框架中您都需要一個供應商目錄。