【问题标题】:Symfony : Can't clear cache when using PHP global variable inside config.ymlSymfony:在 config.yml 中使用 PHP 全局变量时无法清除缓存
【发布时间】:2016-07-01 14:13:05
【问题描述】:

在我的config.yml 文件中,我导入了一个配置参数的params.php 文件:

// app/config/params.php

<?php
$container->setParameter('base_name', $_SERVER['BASE']);

我使用这个参数进行 VichUploader 配置:

// app/config/config.yml
imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
    - { resource: params.php }

vich_uploader:
   db_driver: orm
   mappings:
        tag_image:
            uri_prefix:         %base_name%/../images/tags

它在我的项目中运行良好,但是当我想清除缓存时出现错误:

$ php bin/console cache:clear

我使用 Symfony3。 我遵循this topic 的指导方针。

【问题讨论】:

  • $_SERVER['BASE'] 是什么?你不能改用环境变量吗?
  • 在 $_SERVER 变量不存在的每个控制台命令中,您可能会遇到此错误。我建议你看一下关于How to Set external Parameters in the Service Container的官方文档
  • 我已经看过这个文档,我会像第二段“杂项配置”一样继续。我将尝试配置虚拟主机。谢谢。

标签: php console environment-variables symfony


【解决方案1】:

如果只是在 cli 模式下不会出错,您可以通过这种方式修改您的 params.php

// app/config/params.php

<?php
if (php_sapi_name() != "cli") {
    $container->setParameter('base_name', $_SERVER['BASE']);
}

IMO,如果你想设置外部参数,你应该这样做http://symfony.com/doc/current/cookbook/configuration/external_parameters.html

【讨论】:

  • 我已经看过这个文档,我会像第二段“杂项配置”一样继续。你的解决方案有效,我只是添加了一个“else”条件来使用空字符串设置 base_name,因为如果没有,我有一个错误“不存在的参数 base_name”。我将尝试使用虚拟主机的解决方案,但您的解决方案对我有用。谢谢。
【解决方案2】:

当您在控制台中调用脚本时,“BASE”键不存在。您需要先检查此键是否存在于您的 params.php 中。我不知道 vich 上传程序包,但我认为您不需要缓存清除命令上的正确配置。因此,如果基本键不存在,我认为您可以将空字符串设置为配置。

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2017-12-21
    • 2022-11-10
    相关资源
    最近更新 更多