YAML - 双引号中的Escape \

时间:2016-09-19 14:17:49

标签: symfony phpunit yaml quotes double-quotes

我遇到以下问题:

经典symfony 2项目,phpunit 5.1.7。

在一个yml配置文件中,我有类似这样的内容:

mobile_detect:
    service:
        mobile_detector: mobile_detect.mobile_detector.default
    twig_extension_class: "SunCat\MobileDetectBundle\Twig\Extension\MobileDetectExtension"

我在本地计算机(ubuntu)上运行测试,一切正常。

然后我部署代码(aws环境)并尝试运行测试。一切都失败了,错误:

"Unescaped character \M".

我在yaml中看到双引号解析字符串所以\ M确实是一个未定义的字符。我的问题是......为什么它在本地工作?

此外,当我尝试访问normaly(通过apache - 浏览器调用)时,代码工作正常。为什么这也运作良好?

我想正确的方法是用单引号替换所有双引号,但这将非常耗时(在某些情况下无法替换所有使用它们,因为这可能是预期的)。有没有办法在测试机器上进行测试来解释yml,就像它们在本地机器上一样?

1 个答案:

答案 0 :(得分:0)

  

有没有办法在测试机器上进行测试来解释yml,就像在本地机器上那样?

您在询问是否可以在其他位置重现本地计算机上代码的错误行为。根据不正确的行为,你可以做的最糟糕的事情之一;它往往会通过软件更新来修复。

正如您所述:正确的方法是修复无效的YAML文件。无论是使用单引号还是使用另一个反斜杠转义反斜杠。当您更新软件堆栈时,没有任何解决方案可以保证当前的YAML文件能够正常工作。