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

Lui*_*per 18 php doctrine symfony doctrine-orm

我试着将symfony移动到共享主机.

我将symfony结构移动到/,我的web文件夹是/ public_html.

警告:要求(/家/用户/应用/缓存/生产/教义/ ORM /代理/ __ CG__UserBundleEntityUser.php):未能打开流:在/ home /用户/供应商/教义/ common/lib下没有这样的文件或目录/第209行的Doctrine/Common/Proxy/AbstractProxyFactory.php

警告:要求(/家/用户/应用/缓存/生产/教义/ ORM /代理/ __ CG__UserBundleEntityUser.php):未能打开流:在/ home /用户/供应商/教义/ common/lib下没有这样的文件或目录/第209行的Doctrine/Common/Proxy/AbstractProxyFactory.php

致命错误:需要():失败开口所需 '/home/user/app/cache/prod/doctrine/orm/Proxies/__CG__UserBundleEntityUser.php'(include_path中= ':/选择/ php55/LIB/PHP')中/第209行的home/user/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php

此错误仅在prod环境中发生.dev环境中不会抛出异常.

我尝试了以下方法:

rm -rf /app/cache + chmod 777
app/console cache:warmup
Run Code Online (Sandbox Code Playgroud)

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

LOCAL CACHE: - /annotations,/ twig,/ vich_uploader +/doctrine,/ translations

SERVER CACHE: - /annotations,/ twig,/ vich_uploader

如果我将本地缓存上传到服务器,则异常消失.

Nic*_*ich 59

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

app/console cache:warmup --env=prod
Run Code Online (Sandbox Code Playgroud)

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

应用程序/配置/ config_prod.yml

doctrine:
    orm:
        auto_generate_proxy_classes:  true # <- change to true
        proxy_dir:            '%kernel.cache_dir%/doctrine/orm/Proxies'
        proxy_namespace:      Proxies
Run Code Online (Sandbox Code Playgroud)

  • 如果 auto_generate_proxy_classes 打开,它将在每次请求时生成代理文件!您希望在开发中做到这一点,这样您就不必每次更改某些内容时都手动执行此操作。您不希望在生产环境中使用此方法,因为它会在收到一定数量的请求时终止您的服务器(这种情况发生在我开发的每秒大约 1k 个请求的产品上;) (3认同)