当前位置: 首页 > 知识库问答 >
问题:

如果清除prod缓存,则获取原则代理错误

宁飞宇
2023-03-14

当在服务器上折叠PROD高速缓存时,得到错误的教义代理,而在本地主机上,所有执行都没有错误。重置两台主机上的DEV缓存也成功重置。

"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "v2.7.3",
    "doctrine/orm": "v2.5.0",
    "doctrine/doctrine-bundle": "v1.5.1",
    "twig/extensions": "v1.3.0",
    "symfony/assetic-bundle": "v2.3.1",
    "symfony/swiftmailer-bundle": "v2.3.8",
    "symfony/monolog-bundle": "v2.7.1",
    "sensio/distribution-bundle": "v3.0.30",
    "sensio/framework-extra-bundle": "v3.0.10",
    "incenteev/composer-parameter-handler": "v2.1.1",
    "friendsofsymfony/user-bundle": "v2.0.0-alpha3",
    "knplabs/knp-paginator-bundle": "2.5.0",
    "gregwar/image-bundle": "v2.0.21",
    "sensio/buzz-bundle": "v1.0.0",
    "whiteoctober/breadcrumbs-bundle": "1.2.0",
    "sonata-project/admin-bundle": "2.3.3",
    "sonata-project/doctrine-orm-admin-bundle": "2.3.2",
    "sonata-project/translation-bundle": "1.0.0",
    "sonata-project/doctrine-extensions": "1.0.2",
    "iphp/filestore-bundle" : "v0.2.5",
    "sonata-project/intl-bundle": "2.2.2",
    "oro/doctrine-extensions": "1.0.8",
    "devcookies/signgen": "^1.0",
    "gedmo/doctrine-extensions": "^2.4"
},

我的观察1

运行console命令以清除产品缓存:

sudo PHP应用程序/控制台缓存:清除-e prod

出错

PHP警告:require(/var/www/site.com/www/app/cache/proú/doctrine/orm/Proxies/úuu CGúuu AppMerchantBundleEntityProject.PHP):无法打开流:第209行/var/www/site.com/www/vendor/doctrine/common/lib/doctrine/common/Proxy/AbstractProxyFactory.PHP中没有此类文件或目录PHP致命错误:require():在第209行[2016-01-29 10:30:55]的/var/www/site.com/www/vendor/doctrine/orm/lib/doctrine/common/Proxy.php中,未能打开所需的“/var/www/site.com/www/app/cache/pro/doctrine/orm/Proxies/\uu CG\uu appmerchantsbundleEntityproject.php”(include_path=”:/usr/share/php:/usr/share/pear/share/pear))php.CRITICAL:致命编译错误:require():无法打开必需的'/var/www/site.com/www/app/cache/pro_u/doctor/orm/Proxies/u-CG_u-AppMerchantBundleEntityProject.php'(include_path=.:/usr/share/php:/usr/share/pear'){“type”:64,“file”:/var/www/site.com/www/vendor/doctor/common/common/lib/doctor/common/Proxy/AbstractProxyFactory.php”,“line”:209,“level”:6143,“stack”:[]}{“request_ip”:“unavailable”,“client_ip”:“unavailable”}PHP致命错误:未捕获异常“Symfony\Component\Debug\exception\FatalErrorException”,消息为“Compile error:require():无法打开所需文件”/var/www/www/site.com/www/app/cache/pro\udio/orm/Proxies/\uu CG\uu appmerchantsbundleEntityproject.PHP”(include_path='.:/usr/share/php:/usr/share/pear')位于/var/www/site.com/www/vendor/doctor/common/lib/doctor/common/Proxy/AbstractProxyFactory.php:209堆栈跟踪:

在线209

运行console命令以清除开发人员缓存:

sudophp应用程序/控制台缓存:clear-dev

没问题,没有错误

我的观察№2.

配置文件中时,更改设置

doctrine:
dbal:
    driver:   "%database_driver%"
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
    types:
        json: Sonata\Doctrine\Types\JsonType
    mapping_types:
        enum: string
orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    ...

更改的配置

doctrine:
dbal:
    driver:   "%database_driver%"
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
    types:
        json: Sonata\Doctrine\Types\JsonType
    mapping_types:
        enum: string
orm:
    auto_generate_proxy_classes: true
    ...

产品缓存已刷新,没有错误

我的观察№3.

最近的代码修订实际上都打破并增加了两个相关实体:

项目实体

<?php

namespace App\MerchantBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use App\CoreBundle\Entity\Cashbox;
use App\PaymentBundle\Entity\Cash\Template;
use App\MerchantBundle\Entity\Project\Terminal;

/**
 * Project
 *
 * @ORM\Table(name="merchant_projects", uniqueConstraints={@ORM\UniqueConstraint(name="id_UNIQUE", columns={"id"}), @ORM\UniqueConstraint(name="secret_key_UNIQUE", columns={"secret_key"}), @ORM\UniqueConstraint(name="merchant_id_UNIQUE", columns={"merchant_id"})})
 * @ORM\Entity
 */
class Project
{

    ...

    /**
     * @ORM\OneToMany(targetEntity="\App\MerchantBundle\Entity\Project\Domain", mappedBy="project")
     */
    private $domains;
    ...

和域名实体

<?php

namespace App\MerchantBundle\Entity\Project;

use Doctrine\ORM\Mapping as ORM;

/**
 * Domain
 *
 * @ORM\Table(name="merchant_project_domains")
 * @ORM\Entity
 */
class Domain
{
    ...

    /**
     * @var \App\MerchantBundle\Entity\Project
     *
     * @ORM\ManyToOne(targetEntity="\App\MerchantBundle\Entity\Project", inversedBy="domains")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="project_id", referencedColumnName="id")
     * })
     */
    private $project;

如果删除连接域实体

    /**
     * @var \App\MerchantBundle\Entity\Project
     */
    private $project;

没问题,没有错误

共有3个答案

籍弘伟
2023-03-14

我发现以下命令序列可以工作:

chmod -R 777 ./app/cache 
rm -rf app/cache/*
php app/console cache:clear --env=prod  --no-warmup --no-debug
php app/console cache:warmup --env=prod --no-debug
chmod -R 777 ./app/cache
php app/console doctrine:generate:entities yourBundleName --no-backup
php app/console doctrine:schema:update --force

此外,如果你使用apache,你应该设置正确的所有者缓存文件夹:

sudo chown -R apache:apache app/cache
南门野
2023-03-14

找到了原因。

对于路由的动态条件,我从数据库中获取一个允许的域列表。为此,我使用CompilerPassInterface。如果表中有条目,我将得到错误,如果清除缓存的表已成功清除。

我希望数据库中的数据在缓存时间之前尝试缓存到创建者和项目实体

我的CompilerPass类的屏幕

请告诉我如何将设置存储在数据库中,然后在路线的小胡子中使用它们?

唐骏祥
2023-03-14

您是否尝试强制删除缓存

rm -rf app/cache/*

然后(当然会很好)

php app/console doctrine:schema:update --force
 类似资料:
  • 问题内容: 使用Sql Server2012。我有一个存储过程,它的一部分检查用户名是否在表中。如果是,则返回1,否则返回2。这是我的代码: 但是,我一直收到以下错误: ‘1’附近的语法不正确。 使用IF EXIST甚至可以做到吗? 问候 问题答案: 如果您想这样做,那么这就是您要遵循的语法。 您不一定严格要求这些语句,但是最好是从一开始就养成这种习惯。

  • 我使用Drupal 7最新的开发版本。 我已经安装了清漆和过期模块并设置它们。它们工作得很好,但是我有一个关于从清漆中删除缓存的问题。 问题是如何只删除索引(主页)页面的清漆缓存,而不删除其他页面的缓存。我看了清漆日志,发现每次Drupal执行命令时,整个清漆缓存都被删除了 此命令由varnish模块或expire模块执行,它表示删除主页(索引)页的缓存。但正如我看到的,它正在删除varnish中

  • 我的应用程序使用Spring 4.3. x、EhCache 3.6和javax Cache 1.1.0。以下是我在应用程序中配置javax CacheManager的方式: AppCacheManagerFactoryBean(只是JCacheManagerFactoryBean的自定义版本)帮助我为我的应用程序配置全局持久性目录。这是它的外观: 这是我如何定义缓存的。我使用Ehcache API

  • 问题内容: 我有一个脚本,它使用DROP TABLE IF EXISTS删除表的负载,这可以工作。 此脚本中还有一个删除操作,用于从我不管理的另一个表中删除一行。该表可能存在或不存在。是否有任何在尝试删除行之前检查该表是否存在? 这需要适用于MYSQL和SQLServer 谢谢亚历克斯 问题答案: 要签入SQL SERVER, 要检查mysql: 您只需数:

  • void clear_cache(string template [, string cache id [, string compile id [, int expire time]]]) This clears the cache for a specific template. If you have multiple caches for this template, you can cl

  • 本文向大家介绍Android 获取应用缓存大小与清除缓存的方法,包括了Android 获取应用缓存大小与清除缓存的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇Android 获取应用缓存大小与清除缓存的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。