我正在日本的服务器上部署应用程序。该应用程序是我公司销售的产品,并且已成功安装在许多其他服务器上而没有这些问题。 该应用程序是用PHP / CodeIgniter编写的,并且在其他服务器上成功测试了相同的包。
问题是 - 应用程序只显示一些问号(然后它会因错误而死,即找不到某个类,尽管相同的代码可以在其他服务器上运行)。一些应用程序文件使用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)应用程序死亡,此时尚未发送任何输出。
5)我怀疑,问题与PHP设置有关 - 到目前为止,我已经尝试在php.ini中将default_charset设置为'utf-8',但这并没有改变任何内容。
6)预期输出到应用程序崩溃的程度应该是什么 - 根本没有输出。相反,我得到上面的输出(它以这种方式继续)。
编辑: 我想我到了某个地方 - 问题在于Zend Optimizer。替换编码文件有帮助,输出是预期的。这就产生了另一个问题 - 如何判断Zend Optimizer有什么问题?使用相同版本的Zend Optimizer在不同服务器上测试编码文件,它们运行良好。服务器上的PHP版本是5.2.14,而编码文件不起作用的服务器上的5.2.13版本。
答案 0 :(得分:1)
转到相关文件的第一行并添加echo 'flag1';
。转到第一个include()
并在其后添加echo 'flag2';
。继续每个include()
以及文件末尾的一个{{1}}。这将告诉您问号的起始位置,您可以移动它们,直到找到确切的来源。
如果这个过程引导你进入CodeIgniter库,那么它可能是代码中的一个错误,你必须用它们来实现它。
答案 1 :(得分:0)
的php.ini:
zend_optimizer.enable_loader=0
虽然这个错误很神秘......