Php 部署到开发服务器时Capifony缓存错误
我正在尝试使用capifony将我的Symfony2应用程序部署到外部托管的开发服务器上,但出现以下错误:Php 部署到开发服务器时Capifony缓存错误,php,caching,symfony,capistrano,capifony,Php,Caching,Symfony,Capistrano,Capifony,我正在尝试使用capifony将我的Symfony2应用程序部署到外部托管的开发服务器上,但出现以下错误: --> Updating code base with remote_cache strategy --> Creating cache directory................................✔ --> Creating symlinks for shared directories................✔ --> Creati
--> Updating code base with remote_cache strategy
--> Creating cache directory................................✔
--> Creating symlinks for shared directories................✔
--> Creating symlinks for shared files......................✔
--> Copying Composer from previous release..................✔
--> Updating Composer.......................................✔
--> Updating Composer dependencies..........................✔
--> Building bootstrap file.................................✔
--> Dumping an optimized autoloader.........................✔
--> Installing bundle's assets..............................✔
--> Warming up cache........................................✔
--> Dumping all assets to the filesystem....................✘
*** [err :: x.xx.xx.xxx] PHP Fatal error: Class 'Ivory\GoogleMap\Templating\Helper\Base\CoordinateHelper' not found in /var/www/dev.xyz.co.uk/shared/app/cache/dev/appDevProjectContainer.php on line 462
部署脚本中是否缺少某些内容?这是我的deploy.rb文件:
set :stage_dir, 'app/config/deploy' # needed for Symfony2 only
set :stages, %w(production staging development)
require 'capistrano/ext/multistage'
set :application, "xyz.co.uk"
set :user, "root" # The server's user for deploys
set :normalize_asset_timestamps, false
set :repository, "git@github.com:xyz/xyz.co.uk.git"
set :scm, :git
set :keep_releases, 3
set :use_sudo, false
set :shared_files, ["app/config/parameters.yml"]
set :web_path, "web"
set :shared_children, [app_path + "/logs", app_path + "/cache", web_path + "/uploads", "vendor"]
set :use_composer, true
set :update_vendors, true
set :dump_assetic_assets, true
set :deploy_via, :remote_cache
#logger.level = Logger::MAX_LEVEL
这是我的development.rb文件:
server 'x.xx.xx.xxx', :app, :web, :db, :primary => true
ssh_options[:port] = xxxx
ssh_options[:forward_agent] = true
set :deploy_to, "/var/www/dev.xyz.co.uk"
set :symfony_env_prod, "dev"
set :branch, "develop"
# Need to clear *_dev controllers
set :clear_controllers, false
您不应在不同版本之间共享
app/cache
。保持这样:
set :shared_files, ["app/config/parameters.yml"]
set :shared_children, [app_path + "/logs", web_path + "/uploads"]
我必须在部署之前删除缓存,然后它才能工作。我应该在部署脚本中添加一个钩子以在部署之前清除缓存吗?确定并删除“供应商”吗?我现在就试试。我在部署时缓存目录仍然有问题。我得到错误
RuntimeException:Failed to write cache file“/var/www/xyz.co.uk/app/cache/dev/classes.php”。
除非我删除所有缓存,否则它工作正常。知道为什么吗?我没有像使用/app/logs/那样使用app/cache/symlink,你不应该使用symlinkapp/cache
,因为每个版本都有自己的代码,需要清除缓存,所以这很好。您的问题与权限有关,您必须按此处所述设置权限-。最简单的方法是添加umask(0000)
到app/console
和web/app*.php
。