我正在日本的服务器上部署一个应用程序。 该应用程序是我公司销售的产品,并已成功安装在许多其他服务器上,而没有出现这种问题。 该应用程序是用PHP / CodeIgniter编写的,并且在其他服务器上成功testing了相同的包。
问题是 – 应用程序只显示一些问号(然后死于一个错误,没有find某个类,尽pipe相同的代码在其他服务器上工作)。 一些应用程序文件使用Zend Guard进行编码Zend Optimizer在两台服务器上均可用。 我所尝试/发现的:
1)两个服务器上的主要PHP版本是相同的 – 5.2.x
2)Zend Optimizer版本相同 – 3.3.9
3)问号实际上是问号 – 输出到wget文件并在hex编辑器中打开 – 文件大多包含3F,其间有一些随机的HEX符号:
0000000: 3f3f 3f3f 3f3f 3f3f 3f3f 3f01 3f3f 3f3f ???????????.???? 0000010: 3f3f 3f3f 3f3f 3f3f 3f3f 203f 3f3f 3f3f ?????????? ????? 0000020: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000030: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000040: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000050: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000060: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000070: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000080: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000090: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 00000a0: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 00000b0: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 00000c0: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 00000d0: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 00000e0: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 00000f0: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000100: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000110: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000120: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ???????????????? 0000130: 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f 3f3f ????????????????
4)我怀疑,这个问题与PHP设置有关 – 到目前为止,我已经尝试在php.ini中设置default_charset为'utf-8',但是这并没有改变任何东西。
5)预期的输出到应用程序崩溃的地步应该是没有任何输出的。 相反,我得到上面的输出(它继续以这种方式)。
6)PHP作为一个模块在Apache下运行。
任何想法可能会导致此? 这些文件被复制到服务器上,通过存档并在服务器上解压缩。
这些是响应标题 – 我没有看到任何可疑的东西。
Date Mon, 31 Jan 2011 16:09:34 GMT Server Apache/2.0.63 (Red Hat) Content-Length 5339 Keep-Alive timeout=15, max=100 Connection Keep-Alive Content-Type text/html; charset=utf-8
我首先在stackoverflow.com上问了这个问题,但是决定在这里重新发布它: https : //stackoverflow.com/questions/4852122/php-outputs-question-marks
编辑:我想我得到的地方 – 问题是与Zend优化器。 replace编码文件有帮助,输出如预期。 这会产生另一个问题 – 如何判断Zend Optimizer有什么问题? 编码的文件在不同的服务器上用相同版本的Zend Optimizer进行testing,并且运行良好。 在服务器上,PHP版本是5.2.14,在编码文件不工作的服务器上是5.2.13。
php.ini中:
zend_optimizer.enable_loader=0
错误足够神秘,但…