2012-03-27 142 views
7

我已經得到了錯誤[解決方案在問題結束]Symfony2的 - 與捆綁致命錯誤

Fatal error: Class 'symblog\Blogger\BlogBundle\SymblogBundle' not found in 
/var/www/Symfony/app/AppKernel.php on line 20 

我創辦這個問題How to install or integrate bundles in Symfony2,但考慮到解決方案並不能幫助我,因爲我已經做了那裏的建議。我下面的教程symblog.co.uk除了我在

app/config/routing.yml 

一個

*.php resource 

提前感謝創造的!

我要補充的是,雖然通過控制檯進行註冊捆綁我已經得到了錯誤

The command was not able to configure everything automatically. 
You must do the following changes manually. 

而且說明:

- Edit the app/autoload.php file and register the bundle 
namespace at the top of the registerNamespaces() call: 
'symblog\Blogger\BlogBundle' => '/var/www/Symfony/blog', 

,我緊隨其後。

AppKernel.php

class AppKernel extends Kernel 
{ 
public function registerBundles() 
{ 
    $bundles = array(
     //.. 
     new symblog\Blogger\BlogBundle\SymblogBundle(), 
    ); 

/app/config/routing.yml

SymblogBundle: 
resource: "@SymblogBundle/Resources/config/routing.php" 
prefix: /

按照要求:/app/config/config.yml

imports: 
    - { resource: parameters.ini } 
    - { resource: security.yml } 

framework: 
    #esi:    ~ 
    #translator:  { fallback: %locale% } 
    secret:   %secret% 
    charset:   UTF-8 
    router:   { resource: "%kernel.root_dir%/config/routing.yml" } 
    form:   true 
    csrf_protection: true 
    validation:  { enable_annotations: true } 
    templating:  { engines: ['twig'] } #assets_version: SomeVersionScheme 
    session: 
     default_locale: %locale% 
     auto_start:  true 

# Twig Configuration 
twig: 
    debug:   %kernel.debug% 
    strict_variables: %kernel.debug% 

# Assetic Configuration 
assetic: 
    debug:   %kernel.debug% 
    use_controller: false 
    # java: /usr/bin/java 
    filters: 
     cssrewrite: ~ 
     # closure: 
     #  jar: %kernel.root_dir%/java/compiler.jar 
     # yui_css: 
     #  jar: %kernel.root_dir%/java/yuicompressor-2.4.2.jar 

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: %database_driver% 
     host:  %database_host% 
     port:  %database_port% 
     dbname: %database_name% 
     user:  %database_user% 
     password: %database_password% 
     charset: UTF8 

    orm: 
     auto_generate_proxy_classes: %kernel.debug% 
     auto_mapping: true 

# Swiftmailer Configuration 
swiftmailer: 
    transport: %mailer_transport% 
    host:  %mailer_host% 
    username: %mailer_user% 
    password: %mailer_password% 

jms_security_extra: 
    secure_controllers: true 
    secure_all_services: false 

[編輯]從@Clamidity回答後,解決方案非常簡單,該捆綁包通常位於src/Blogger/SymBlogBu​​ndle/BloggerSymBlogBu​​ndle.php

雖然使用控制檯的配置它對捆綁軟件的位置有所瞭解,默認情況下是/../src,但我更改爲/../blog。當然這不起作用,Symfony正在尋找錯誤的位置。我所做的是將/ blog內的文件夾移動到/ src,一切都很順利。

+0

你拿到你的類名吧?你確定它是「symblog \ Blogger \ BlogBu​​ndle \ SymblogBu​​ndle」而不是「Symblog \ Blogger \ BlogBu​​ndle \ SymblogBu​​ndle」(注意大寫「S」)? – 2012-03-27 22:22:53

+0

什麼是你的包的文件路徑? – Shattuck 2012-03-27 22:40:12

+0

文件路徑是/ var/www/Symfony/blog – matt 2012-03-27 22:43:31

回答

13

有幾件事情可能會發生。我只會介紹任何我能想到的東西。

  1. 通常將包放在src文件夾中。所以你的包的路徑應該是這樣的。

    src/Blogger/SymBlogBundle/BloggerSymBlogBundle.php 
    

    (注意包名稱如下的文件名約定)

  2. 裏面的BloggerSymBlogBu​​ndle.php的請確保您有類似以下的東西:

    <?php 
    
    namespace Blogger\SymBlogBundle; 
    
    use Symfony\Component\HttpKernel\Bundle\Bundle; 
    
    class BloggerSymBlogBundle extends Bundle 
    { 
    } 
    

    (請注意,在這裏也遵循相同的名稱約定)

  3. 在你的autoload.php中,應該註冊的命名空間是t他是你的包的名稱/路徑的「Blogger」部分。這是因爲該束本身駐留在博客文件夾中:

    'Blogger' => __DIR__.'/../src', 
    

    (請注意,所列出的文件夾是博客文件夾的父)寄存器根據命名空間中的束在AppKernel.php

  4. 現在您的設置和註冊:

    new Blogger\SymBlogBundle\BloggerSymBlogBundle(), 
    

    *注 - 您的資源和引用該軟件包上述配置是

    BloggerSymBlogBundle 
    

    所以你的PHP的路由將通過使用被稱爲:

    @BloggerSymBlogBundle/Resources/config/routing.php 
    
4

有不同的解決方案。

清除app/cache /(prod | dev)文件夾。當你編輯了Appkernel和自動加載。

Fatal error: Class 'symblog\Blogger\BlogBundle\SymblogBundle' not found in /var/www/Symfony/app/AppKernel.php on line 20

這裏現在是不同的問題:

  1. 放眼SymblogBu​​ndle.php在包文件夾,看看他們使用的命名空間。可能它真的是大寫字母(「S」)就像@kuba所說的那樣。

  2. 類文件不在文件夾中,或者您沒有權限解釋程序可以加載文件的文件夾。

  3. 我認爲你的autoload.php不正確。

    'Avalanche'  => __DIR__.'/../vendor/bundles', 
    

    這是註冊名稱空間的常用方法。在你的情況下,它必須是

    'Symlog' => '/var/www/Symfony/blog', 
    

Here are the instructions from the "BloggerBundle"我希望它的正確的

在那裏,你可以看到你的自動加載其不正確的命名空間是「博客」。