[英]PHP outputs question marks
我正在日本的服务器上部署应用程序。 该应用程序是我公司销售的产品,并且已成功安装在许多其他服务器上,而没有出现此类问题。 该应用程序是用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。
转到相关文件的第一行,并添加echo 'flag1';
。 转到第一个include()
并添加echo 'flag2';
之后。 对于每个include()
继续操作,并在文件末尾再添加一个。 这将告诉您问号在哪里开始,您可以四处移动问号,直到找到确切的来源为止。
如果此过程将您带入CodeIgniter库,则可能是其代码中的错误,您必须将其与它们一起使用。
php.ini中:
zend_optimizer.enable_loader=0
该错误是足够神秘的...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.