2010-03-11 5 views
0

Это мои коды и я получил ошибку:как решить ошибку array_walk

require_once(IPT_DIR."config.php"); 
    if ($trackip == 1) { 
      $ipaddr = $_SERVER["REMOTE_ADDR"] ; 
    $hostnm = gethostbyaddr("$ipaddr"); 

    $exclude_me=false; 
    array_walk($exclude_ips, 'exclude_ip'); 
    if(!$exclude_me) array_walk($exclude_hosts, 'exclude_host'); 
    if (!$exclude_me) { 
     # concatenate SCRIPT_NAME and QUERY_STRING since REQUEST_URI not used in Windows hosted sites. 
     # $pg = getenv(REQUEST_URI); 
     # $pg = getenv(SCRIPT_NAME); 
     $pg = $_SERVER["SCRIPT_NAME"]; 
     # if ((getenv(QUERY_STRING)) != "") { $pg = $pg . "?" . getenv(QUERY_STRING) ; } 
     if (($_SERVER["QUERY_STRING"]) != "") { $pg = $pg . "?" . $_SERVER["QUERY_STRING"] ; } 

    } 

И в config.php файл:

$trackip = 1; 

$exclude_ips = array(); # quoted IP comma separated list, wildcards ok 
# example: $exclude_ips = array('127.0.0.1', '68.69.+'); 

$exclude_hosts = array(); # quoted Hostname comma separated list, wildcards ok 
# example: $exclude_hosts = array('swbcs007.sbc.com', '.+avantgo.com'); 

И когда я запускаю этот сценарий, я получаю это ошибка:

Warning: array_walk() [function.array-walk]: The argument should be an array in tracking.php on line 80

Warning: array_walk() [function.array-walk]: The argument should be an array in tracking.php on line 81

Вы знаете, почему это происходит?

+0

Что выводится, если вы 'var_dump ($ exclude_ips);'? –

ответ

0

$exclude_ips и $exclude_hosts либо не определены, либо не являются массивами. Возможные причины:

  • Вы редактируете/включая неправильный конфигурационный файл (или, что менее вероятно, конфигурационный файл не включаются вообще, но это должно вызвать ошибку я считаю)
  • Вы перезаписью массивов из файла конфигурации где-то еще, прежде чем использовать их в array_walk
+0

Итак, что такое предложение ur, и что мне делать в точности, я должен отметить, что когда я удаляю строку config.php, все идет хорошо, но я уверен, что это приведет к отключению функциональности –

0

Вы можете попробовать следующее - в config.php и tracking.php непосредственно перед использованием $ exclude_ips и $ exclude_hosts добавить

global $exclude_hosts; 
global $exclude_ips;