Symfony2 在生产环境中出现故障

3
我们本周在生产环境中部署了我们的第一个Symfony2网站。
但是,在服务器上出现了一些奇怪的问题,但我们无法在本地复现该问题。我们在其他服务器上进行了测试,并捕获了相同的错误。如果有帮助的话,我们尝试了亚马逊EC2上的Ubuntu AMI和其他服务器上的Debian。同时使用了apache2+mod_php和nginx+php-fpm,php版本为5.3.3。Symfony为2.0.9。
某些请求只返回空白屏幕,并在错误日志中出现以下错误:
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php on line 80
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 1152
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 1146
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 464
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 465
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 466
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 666
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 467
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 468
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/app/bootstrap.php.cache on line 469
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/ParameterBag.php on line 34
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/Request.php on line 123
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/ParameterBag.php on line 34
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/Request.php on line 124
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/ParameterBag.php on line 34
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/Request.php on line 125
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/ParameterBag.php on line 34
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/Request.php on line 126
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/FileBag.php on line 48
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/Request.php on line 127
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/ParameterBag.php on line 34
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Warning:  Attempt to assign property of non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/Request.php on line 128
[Sun Feb 12 17:09:30 2012] [error] [client 192.168.51.125] PHP Fatal error:  Call to a member function getHeaders() on a non-object in /var/www/itop/vendor/symfony/src/Symfony/Component/HttpFoundation/Request.php on line 129

我们目前遇到了问题,但无法确定具体原因。有其他人也遇到过这样的问题吗?如果有任何帮助,我们将不胜感激。

你尝试过重新构建你的 bootstrap.php.cache 文件吗? - Florian Klein
1
你还需要在CLI环境和Web环境下清除你的APC缓存。 - Florian Klein
重建bootstrap.php.cache没有结果。 - user432904
我不知道。第1152行的bootstrap.php.cache文件内容可能很有趣。 - Florian Klein
intl已安装,是的。我们使用ApcUniversalClassLoader,在autoload.php中实例化。在bootstrap.php.cache中有UniversalClassLoader的代码。 - user432904
显示剩余3条评论
3个回答

1
根据我的经验,当你遇到像这样的奇怪错误时,特别是在不合理的地方看到随机的“非对象”问题时,问题总是出在内存上。确切地说,一个对象被创建,但是然后这个对象在内存中丢失了,所以到了下一行,它就不再是一个对象了。我只见过几次这种情况,但它总是与APC的问题有关。事实上,在我上一份工作中,我们在升级到PHP 5.3后遇到了类似的问题 - 它大部分时间都能正常工作,但最终APC会耗尽内存,我们就会遇到这些错误。当时(大约一年前),从谷歌搜索来看,PHP和APC在某些情况下存在一些问题。我肯定会调查APC - 我真的认为这是你的问题。具体而言,APC没有清除旧内存以腾出空间来存储新内容。

祝你好运!


即使完全关闭了apc,也没有任何效果。相同的错误,但这次没有ApcUniversalClassLoader行。 - user432904

1

好的,我认为我们找到了解决这个问题的办法。当我们将服务器上的php升级到最新版本5.3.10时,奇怪的错误都消失了。只是这么简单。可能是一些php 5.3.3的bug,我不知道。我们在版本日志中也没有找到相关内容。

这个周末,我们将测试另一台安装有freebsd和5.3.8的机器。

感谢每个试图帮助我们的人。


0
你尝试过升级到Symfony 2.0.10吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接