[Mon Nov 11 11:07:18 2013] [error] [client nnn.nnn.nnn.nnn] PHP Notice: Undefined index: population in /home/client/locale-qa/include/header.php on line 11
我试图从供应商发送的300 + MB Apache日志文件中重现此日志错误。供应商无法提供header.php
中发现的代码(令人沮丧),但是这个错误,很多人似乎都是我们所支持的HTTP响应的根源。
我不是PHP-ninja,但我理解错误足以看到它表明可能没有定义某些关联索引标签。
任何简单的东西都可以让我在沙箱中重现错误我会有所帮助。
答案 0 :(得分:1)
<?php
echo $_REQUEST["population"]; //Undefined index: population
//Solution
$population = isset( $_REQUEST["population"] ) ? $_REQUEST["population"] : null; //if not set then set it to null
?>
答案 1 :(得分:1)
header.php的第11行引用$somearray['population']
,但该数组中没有'population'键。
您需要查看header.php以了解它是如何填充$somearray
的,以及为什么它可能不会为'人口'提供值。
使用isset($somearray['population'])
或array_key_exists('population', $somearray)
来避免“未定义的索引”错误通常是一个好主意,但是如果密钥不存在,则必须确定脚本应该执行的操作。阵列。
答案 2 :(得分:0)
尝试使用grep
-ing作为时间戳和日志文件中的ip,这应该将其缩小到足以使您可以尝试所有这些并查看错误是否存在(希望这是一个GET请求)。一个300M +文件应该不是问题。通常的apache日志格式如下所示:
grep -iE "x\.x\.x\.x.*\[11/\Nov\/2013:11:07:19" the_log_file.log
(ip地址所在的x-es)。您应该在行尾看到类似的内容:
.... GET /some_path/some.php?foo=bar HTTP/1.1" 200 42
由此,您可以获取路径,将其附加到服务器的域中,并查看是否存在错误。你可以忽略图像,css和其他静态资产GET,但是如果你有一些重写规则或者在这些行上执行PHP的其他方式,那么也要检查它们。
如果你使用的是unix系统,你可能已经有了grep,如果你不是,你可以在这里获取一个windows副本:http://gnuwin32.sourceforge.net/packages/grep.htm