Symfony缓存生产时的预热错误

时间:2017-06-12 12:03:49

标签: php symfony caching symfony-cache

似乎只有在生产服务器上加热缓存才会导致错误。这就是我尝试预热缓存的方法:

$ rm -rf app/cache/*
$ chmod -R 777 app/cache/
$ php app/console doctrine:cache:clear-metadata --env=prod
$ php -r "apcu_clear_cache();"
$ php app/console cache:warmup --env=prod --verbose

在我当地的开发环境中,这就像一个魅力。 我使用的是Symfony 2.8.22和PHP 7.0。我的生产服务器上的错误是:

[Symfony\Component\Debug\Exception\FatalErrorException]                                           
Compile Error: require(): Failed opening required '/home/wingman/Symfony/app/cache/pro_/doctrine  
/orm/Proxies/__CG__CmsCoreBundleEntityPagePageGroup.php'  
(include_path='.:/opt/alt/php70/usr/share/pear')                                                                                   

Exception trace:
/home/wingman/Symfony/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:209

我已经剥离了实体,错误是至少:

/**
 * @ORM\Table(name="cms_cr_page_group")
 * @ORM\Entity(repositoryClass="Cms\CoreBundle\Entity\Page\PageGroupRepository")
*/
class PageGroup {

  /**
   * @ORM\Id
   * @ORM\Column(type="integer", options={"unsigned":true})
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;

1 个答案:

答案 0 :(得分:0)

无法从命令行访问APCU缓存,您需要Web上下文才能清除它。

我个人在项目中使用一个名为cachetool.phar的工具来清除ACPU缓存(实际上它提供了更多)。

所以要清除APCU缓存:

php cachetool.phar apcu:cache:clear --fcgi=127.0.0.1:9000(改编PHP-FPM / PHP-CGI端口)

如果问题仍然存在,请尝试清除查询php app/console doctrine:cache:clear-query缓存。