Symfony缓存原则/orm/Proxies无法在第209行打开stream/Proxy/AbstractProxyF


Symfony Cache doctrine/orm/Proxies failed to open stream /Proxy/AbstractProxyFactory.php on line 209

我正在尝试将symfony移动到共享主机。

我把symfony结构移到了/,我的web文件夹是/public_html。

警告:require(/home/user/app/cache/prod/doctrine/orm/Proxies/_CG__UserBundleEntityUser.php):无法打开流:在第209行上的/home/user/vendor/common/lib/doctrine/common/Proxy/AbstractProxyFactory.php中没有这样的文件或目录

警告:require(/home/user/app/cache/prod/doctrine/orm/Proxies/_CG__UserBundleEntityUser.php):无法打开流:在第209行上的/home/user/vendor/common/lib/doctrine/common/Proxy/AbstractProxyFactory.php中没有这样的文件或目录

致命错误:require():无法在第209行上打开/home/user/vendor/common/lib/doctrine/common/Proxy/AbstractProxyFactory.php中所需的'/home/uuser/app/cache/prod/doctrine/orm/Proxies/_CG__UserBundleEntityUser.php'(include_path='.:/opt/php55/lib/php')

此错误仅在prod环境中发生。dev环境中未引发异常。

我尝试了以下方法:

rm -rf /app/cache + chmod 777
app/console cache:warmup

我使用Symfony 2.8.3。以下目录存在于本地和服务器上:

本地缓存:-/annotations,/tritch,/vic_uploloader+/条令,/translations

服务器缓存:-/annotations、/tritch、/vic_uploader

如果我将本地缓存上传到服务器,异常就会消失。

在尝试访问应用程序之前,您没有创建代理类。这通常通过以下方式完成:

app/console cache:warmup --env=prod

默认情况下,在prod环境中禁用代理类的自动生成。您可以通过将其添加到您的配置中来启用类似于dev环境的代理类的自动生成:

app/config/config_prod.yml

doctrine:
    orm:
        auto_generate_proxy_classes:  true # <- change to true
        proxy_dir:            '%kernel.cache_dir%/doctrine/orm/Proxies'
        proxy_namespace:      Proxies

/app/config/doctrine.yml

更改自:

  orm:
    auto_generate_proxy_classes: "%kernel.debug%"

收件人:

  orm:
    auto_generate_proxy_classes: true

工作!

我已经更改了所有引用表达式"auto_generate_proxy_classes"的文件(我已经将值从"false"更改为"true"),这解决了问题:

  1. /供应商/条令/条令捆绑包/DoctrineBundle.php
  2. /供应商/条令/条令包/资源/doc/configuration.rest
  3. /供应商/条令/条令捆绑包/DependencyInjection/Configuration.php
  4. /供应商/条令/条令捆绑包/DependencyInjection/DoctrineExtension.php
  5. /app/config/config.php
  6. /app/cache/prod/appProdProjectContainer.php