【发布时间】:2017-04-05 16:42:35
【问题描述】:
在 Ubuntu 服务器上的 prod 环境中运行我的 symfony3 项目,我收到以下错误:
“注意:未定义索引:data_collector/passed_options”,
如果我使用dev 环境,则不会发生此错误。
错误是在我的自定义FormType中抛出的:
// src/MyBundle/Form/CustomType/MyCustomType.php:
class MyCustomType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->addEventListener(FormEvents::POST_SET_DATA, function(FormEvent $event){....}
$form = $event->getForm();
$inheritedAttr = $form->getConfig()->getAttributes()['data_collector/passed_options']['attr']; //it crashes there
....
}
}
我在生产 Ubuntu 服务器 (Like it is explained here) 上编辑了我的 app_dev.php 文件,以便我可以使用此命令在生产中进行测试:
php bin/console server:start [我的服务器的IP]:[自定义端口]
但是在dev 环境中仍然没有抛出错误。所以这不是我的开发机器的问题。
会不会是$form->getConfig()->getAttributes()在prod环境下没有索引?
有什么方法可以调试在prod 环境中发生但在dev 环境中不发生的此类错误?
【问题讨论】:
-
崩溃的那一行看起来甚至不像是实现代码的正确方法。你想做什么?您是否有正在遵循的参考教程或代码?如果是这样,您可以发布链接吗?我在 Symfony 上看过你的一些帖子,你似乎遵循更旧的标准,而不是 the latest documentation。
-
@Alvin Bunk,感谢您的意见,我尽可能地遵循 SYMFONY 文档。在本文档上所做的工作很棒。也许我在那里和那里使用旧标准,因为我在 SO 或其他任何地方找到了我的问题的解决方案。我不会详细介绍我的最终目标,我也明白知道这可以帮助你引导我走向可能与我相关的其他方向。但是我的代码太高级了,它在 DEV 模式下工作得很好,我现在只想让它在 PROD 中工作。那时我不能冒险重新设计它。
标签: php symfony symfony-forms production-environment symfony-3.2