Symfony Cache doctor/orm/Proxies无法在第209行打开stream/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”)失败 此错误仅在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中没有此类文件或目
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