2012-03-27 141 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"我希望它的正确的

在那里,你可以看到你的自动加载其不正确的命名空间是“博客”。