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

时间:2014-05-07 18:51:57

标签: php string error-reporting

自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级别也存在差异。

关于服务器相关崩溃原因的任何想法?

1 个答案:

答案 0 :(得分:1)

从手册:

"从PHP 5.4开始,字符串偏移必须是整数或类似整数的字符串,否则将引发警告。以前是像" foo"被默默地演绎为0。"

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

可能PHP最近在某些服务器上更新为5.4,或者您最近才发现此错误。