Symfony Cache doctor/orm/Proxies无法在第209行打开stream/Proxy/AbstractProxyFactory.php

Symfony Cache doctor/orm/Proxies无法在第209行打开stream/Proxy/AbstractProxyFactory.php,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我正在尝试将symfony移动到共享主机 我将symfony结构移动到/并且我的web文件夹是/public\u html 警告:require(/home/user/app/cache/prod/doctor/orm/Proxies/_CG__UserBundleEntityUser.php):未能打开流:第209行的/home/user/vendor/doctor/common/lib/doctor/common/Proxy/AbstractProxyFactory.php中没有此类文件或目

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

我将symfony结构移动到/并且我的web文件夹是/public\u html

警告:require(/home/user/app/cache/prod/doctor/orm/Proxies/_CG__UserBundleEntityUser.php):未能打开流:第209行的/home/user/vendor/doctor/common/lib/doctor/common/Proxy/AbstractProxyFactory.php中没有此类文件或目录

警告:require(/home/user/app/cache/prod/doctor/orm/Proxies/_CG__UserBundleEntityUser.php):未能打开流:第209行的/home/user/vendor/doctor/common/lib/doctor/common/Proxy/AbstractProxyFactory.php中没有此类文件或目录

致命错误:require():在第209行的/home/user/vendor/doctor/common/lib/doctor/common/Proxy/AbstractProxyFactory.php中打开所需“/home/user/app/cache/prod/doctor/orm/Proxies/uuu CG_uuserbundleEntityuser.php”(include_path=”:/opt/php55/lib/php”)失败

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

我尝试了以下方法:

rm -rf /app/cache + chmod 777
app/console cache:warmup
我使用Symfony 2.8.3。以下目录在本地和服务器上存在:

本地缓存: -/annotations、/twig、/vich_uploader+/doctrine、/translations

服务器缓存: -/annotations、/twig、/vich_上传程序


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

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

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
原则:
orm:

自动生成代理类:true#我已更改了引用表达式“自动生成代理类”的所有文件(我已将值从“false”更改为“true”),这修复了问题:

  • /供应商/条令/条令包/DoctrineBundle.php
  • /供应商/条令/条令包/资源/doc/configuration.rst
  • /供应商/条令/条令包/依赖注入/Configuration.php
  • /供应商/条令/条令包/依赖注入/DoctrineExtension.php
  • /app/config/config.php
  • /app/cache/prod/appProdProjectContainer.php

  • /app/config/doctrine.yml

    更改为:

      orm:
        auto_generate_proxy_classes: "%kernel.debug%"
    
    致:


    工作

    您是否运行了应用程序/控制台缓存:warmup--env=prod
    ?这个命令实际上生成了代理缓存…是的,我运行。此无返回错误,返回消息预热生成。但文件夹原则是app/cache/prod中的任务。我提供了一个解决问题的答案。在
    prod
    环境的配置中启用自动代理类生成。这解决了问题。在我的配置之前,只有这个自动生成代理类:“%kernel.debug%”。感谢第一行有一个输入错误,它是
    原则:
    :)“prod环境中默认禁用代理类的自动生成”为什么?我应该永远启用它还是再次禁用它?在我的情况下,我没有使用命令警告我的缓存,但将其设置为“自动”确实有效(dooh?)。如果启用“自动生成代理类”,它将在每次请求时生成代理文件!您希望在开发中实现这一点,因此您不必在每次更改某些内容时手动执行此操作。您不希望在生产环境中使用此功能,因为它会在一定数量的请求时(发生在我开发的产品上,每秒约1k个请求;)杀死您的服务器。您不应该更改/vendor中的文件
      orm:
        auto_generate_proxy_classes: true