在服务器上找不到类,在本地工作得很好

时间:2013-04-11 14:18:34

标签: symfony capifony

我正在使用symfony2.1,github和capfony(用于部署)

当我开始这个项目时,这些组合非常有效。

然而,由于我将SonataUserBundle和FOSUserbundle添加到项目

  

上限部署

命令返回错误 比如

  

PHP致命错误:第26行的/var/www/html/muty/releases/20130410144941/app/AppKernel.php中找不到类'Sonata \ AdminBundle \ SonataAdminBundle'

但我在这里有SonataAdminBundle。

[应用程序名称] / vendor / sonata-project / admin-bundle / Sonata / AdminBundle 和 在AppKernel.php中

public function registerBundles()
{
    $bundles = array(
     .....
        new Sonata\AdminBundle\SonataAdminBundle(),
        new Sonata\CacheBundle\SonataCacheBundle(),
        new Sonata\BlockBundle\SonataBlockBundle(),
        new Sonata\jQueryBundle\SonatajQueryBundle(),
        new Knp\Bundle\MenuBundle\KnpMenuBundle(),
        new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
        new FOS\UserBundle\FOSUserBundle(),
    .....
    );
}

这些结构适用于本地,但不能部署

我使用的是作曲家而不是供应商。

IMHO, 似乎供应商文件夹没有正确部署,我是否正确? 或者还有其他地方可以检查? 请给我一些想法!

非常感谢

我的deploy.rb是

set :application, "myapplication"
set :domain,      "myapplication"
set :deploy_to,   "/var/www/html/myapplication"
set :app_path,    "app"

set :repository,  "git@github.com:myname/myapplication.git"
set :scm,         :git
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `subversion`, `mercurial`, `perforce`, or `none`

set :default_shell,         "TERM=dumb sudo -u app /bin/sh"
set :branch, "master"
set :scm_username, "myname"
set :scm_passphrase, "mypass"
set   :use_sudo,      false
set :user, 'app'
set :model_manager, "doctrine"
# Or: `propel`

role :web,        "49.212.***.***"                         # Your HTTP server, Apache/etc
role :app,        "49.212.***.***"                         # This may be the same as your     `Web` server
role :db,         "49.212.***.***", :primary => true       # This is where Symfony2     migrations will run

set  :keep_releases,  3
set :clear_controllers,     false #app_dev.php should be deployed
#set :shared_files,        ["app/config/parameters.yml"]
#set :shared_children,     [app_path + "/logs", web_path + "/uploads"]

set :use_composer, true
set :update_vendors, true
set :deploy_via,            :remote_cache

set :writable_dirs,       ["app/cache", "app/logs"]
set :permission_method,   :chown #
set :use_set_permissions, false

# Be more verbose by uncommenting the following line
logger.level = Logger::MAX_LEVEL

1 个答案:

答案 0 :(得分:1)

我认为问题在于,当编写者尝试与您的应用程序交互时,SonataAdminBundle未安装{很可能会使缓存升温),从而触发错误。

首先要尝试的是将vendor添加到shared_children,如下所示:

  

设置:shared_children,[app_path +“/ logs”,web_path +“/ uploads”,“vendor”]

其次,每次部署时更新供应商可能不是一个好主意(并且由于不兼容的依赖性而实际上可能导致问题):

  

set:update_vendors,false

如果这两个都失败了,请尝试从头开始部署到新文件夹(使用上面的设置),看看它是否会引发任何错误。