【问题标题】:Symfony 2 and php.yml configurationSymfony 2 和 php.yml 配置
【发布时间】:2015-06-09 08:03:39
【问题描述】:

我一直在寻找在 Symfony 项目中设置常用 PHP 选项的最佳位置,并看到有几次提到 php.yml - 但我发现主要是在 v1.x 文档中,而在 v2.x 中没有提及它(或者至少我找不到它 - Symfony 搜索已关闭一段时间也无济于事)。

php.yml 有很好的 'set''check''warn' 区域,其中你可以微调你的配置。

我尝试放置 php.yml 并在 app/config 中使用一些选项对其进行设置,但它不起作用。

php.yml 在 Symfony 2 中被放弃了吗?如果是 - 下一个很好地设置 PHP 选项的最佳方法是什么?

根据要求,这是我尝试过的一个简单的 php.yml 示例,它非常基础:

## YAML Template.

set:
    display_errors:     on
    error_log:          phperror.log

check:

warn:

编辑:关于我为什么放弃像 Matteo 建议的解决方案的附加说明

当我这样做时,发生了一些奇怪的事情。我无法确定 究竟为什么,所以我离开了(我尽量避免所有不确定性 来到 Symfony 是因为生命如此短暂)。 所以,我制作了“my_own_config.php”,其中只有一行:

ini_set("error_log", "c:/wamp/logs/phperror2.log");

在我的 config_dev.yml 中,我将它包含在 - { resource: my_own_config.php }

在我的测试控制器中,我会打印

echo '<br>'.ini_get('error_log');

以确保我的设置得到真正应用和记住。最初, 当我第一次加载测试页面时,它真的会记住并显示正确的新设置,但是当我在它之后按 F5 时 - 它再次显示默认的系统日志。我一直在开发模式下运行。尝试了 F5、硬刷新等,但后来所有的调用都回退了 降到默认值。

当我更改 my_own_config.php 文件并重新保存它时 - 再次,在那之后的第一次,我的自定义设置将是 记住,并在以下刷新时消失。 因此,我得出结论,一些奇怪的 Symfony 缓存接管并覆盖了我的自定义 php 配置文件并放弃了这种方法。

【问题讨论】:

  • 为了更好地了解您需要的配置,您能否发布您的php.yml 文件?

标签: php symfony configuration


【解决方案1】:

如果您想进行一些外部框架设置更改,您可以按照Miscellaneous Configuration 中的描述组织您的设置,例如,您可以将自定义设置放在如下文件中:

# app/config/my_settings.php

<?php 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

并将其包含在您的 config.yml 中:

# app/config/config.yml
imports:
    - { resource: my_settings.php }

希望有帮助

【讨论】:

  • 我实际上是这样做的,但这对我来说似乎不对。 :) 我的意思是 - 它有效,但是将实际的 PHP 代码(init 命令)并将其包含到配置文件中,似乎是错误的。我期待预期会包含来自 config.yml 的一些实际配置文件。我可能错了,只是看起来不对
  • 嗨@userfuser 我个人同意你的看法。官方指南中提到了这种方法,我发现它对于像this这样的任务很有用
  • 我听到了。顺便说一句,我添加了更多关于我为什么放弃这种方法的数据(在原始问题中)。我的情况就是这样,我不知道为什么。
【解决方案2】:

php.yml 是 Symfony1 的配置文件,不适合在 Symfony2 中使用。

根据Symfony Best Practices 页面,app/config/config.yml 适用于与应用程序相关的设置,而app/config/parameters.yml.dist(从中自动生成parameters.yml)适用于与基础设施相关的设置。

在 app/config 中找到的标准 Symfony2 配置文件是:

  • config.yml
  • config_dev.yml
  • config_prod.yml
  • config_test.yml
  • parameters.yml(从 parameters.yml.dist 生成)
  • parameters.yml.dist
  • routing.yml
  • routing_dev.yml
  • security.yml
  • services.yml

对于原始 PHP 配置设置,最好的位置是 web/app_dev.php(用于开发)或 web/app.php(用于生产),或通过 php.ini 在系统范围内。然而 Symfony 有自己的 PHP 错误处理服务。但是您仍然可以在 app_dev.php 文件的顶部打开 PHP 错误 - error_reporting(E_ALL); ini_set('display_errors', 1);

【讨论】:

  • 感谢您清除 php.yml 的东西。我知道 Symfony 的配置文件(至少是那些在文档中明确提到的),但我仍然不知道如何在这些文件中添加如下内容: display_errors: off (除了 Matteo提出的,我试过但没有成功)
  • 对于原始 PHP 配置设置,最好的位置是 web/app_dev.php(用于开发)或 web/app.php(用于生产),或通过 php.ini 在系统范围内。然而 Symfony 有自己的 PHP 错误处理服务。但是您仍然可以在 app_dev.php 文件的顶部打开 PHP 错误 - error_reporting(E_ALL); ini_set('display_errors', 1);
  • 如果您可以添加您的最后一条评论(使用 app_dev.php)作为建议的答案,我会接受。这并不理想,但我会同意的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
相关资源
最近更新 更多