我正在使用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
答案 0 :(得分:1)
我认为问题在于,当编写者尝试与您的应用程序交互时,SonataAdminBundle
未安装{很可能会使缓存升温),从而触发错误。
首先要尝试的是将vendor
添加到shared_children
,如下所示:
设置:shared_children,[app_path +“/ logs”,web_path +“/ uploads”,“vendor”]
其次,每次部署时更新供应商可能不是一个好主意(并且由于不兼容的依赖性而实际上可能导致问题):
set:update_vendors,false
如果这两个都失败了,请尝试从头开始部署到新文件夹(使用上面的设置),看看它是否会引发任何错误。