把公司以前用symfony1.2做的一个项目上传到测试服务器上会出现配置文件解析错误,把除了error_reporting之外的所有配置注释掉就会好用,找个很久也没找到原因。
最后没办法开始重写配置, 终于发现原因, 原代码如下:
dev:
.settings:
error_reporting: < ?php echo (E_ALL | E_STRICT) ^ E_NOTICE ^ E_DEPRECATED ."\n" ? >
web_debug: on
cache: off
no_script_name: off
etag: off
default_culture: ja
问题就是由于 E_DEPRECATED 常量导致的,这个常量是5.3之后才添加的, 所以在5.3以下版本的php就会出现常量未定义的错误,导致配置文件解析错误,E_DEPRECATED是一些不推荐使用(也可以说是即将废弃的)的函数错误, 因为程序是在5.2下开发的, 升级至5.3错误异常的多, 所以屏蔽此错误。
解决办法,去掉E_DEPRECATED常量或者进行defined()处理。