PHP无效字符串索引在某些服务器上导致错误,但在其他服务器上没有


PHP invalid string index causes error on some servers but not on others

自2008年以来一直使用的无效PHP字符串索引今天开始导致错误。调试无效字符串索引的原因不是我的问题的一部分。问题是为什么这只出现在某些服务器上?

下面是一个示例代码:
$str = '0:828:555555';
$y = $str['id'];

['id']的存在似乎是导致一台服务器崩溃的问题,但在我们的任何生产服务器上都没有。所以这些年来无效的编码一直在转义。

PHP的级别和error_reporting的级别是不一样的。允许错误通过的版本是5.3.8。有错误的版本是5.4.24。此外,5.4.24有E_STRICT,但所有其他设置都是一样的。

所以我关闭了E_STRICT,错误仍然发生。

最简单的答案是"PHP级别不一样"。但是这个错误已经存在很长时间了,所以PHP的级别也不同。

关于服务器相关崩溃的原因有什么想法吗?

从手册:

"从PHP 5.4开始,字符串偏移量必须是整数或类整数字符串,否则将抛出警告。以前,像"foo"这样的偏移量被静默地强制转换为0。"

http://www.php.net/manual/en/language.types.string.php

可能您的某些服务器上的PHP最近更新到5.4,或者您最近才注意到这个错误。