Перейти к содержимому


Ошибки в логах


  • Вы не можете ответить в тему
Сообщений в теме: 4

#1 hedhedhed

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 4
Начинающий

Отправлено 19 August 2015 - 08:00 PM

Возник вопрос. Что это такое, и как это исправить (вряд-ли такое кол-во warning'ов идет на пользу сайту) ?


Логи:

"WARNING: Invalid argument supplied for foreach()
Line: 120
File: /home/......./public_html/core/includes/advanced_search_in_category.php
Link: /category_135_offset_15.html
Date: 19.08.15 - 20:23:49
Dump:
array (
'categoryID' => '135',
'offset' => '15',
'PHPSESSID' => 'd21033579882f0b8442723b998de6aa1',
'__utmt' => '1',
'__utma' => '240384279.2084099585.1439834988.1439838195.1440004987.3',
'__utmb' => '240384279.1.10.1440004987',
'__utmc' => '240384279',
'__utmz' => '240384279.1440004987.3.3.utmcsr=yandex|utmccn=(organic)|utmcmd=organic',
'jv_enter_ts_jeRX8IfQ9u' => '1440004988326',
'jv_refer_jeRX8IfQ9u' => 'http://www.yandex.by...FixVw1rdWvenhG-
...................................................................................................
IXn2fb4Hs60sLdvEQSxKwVu9ClxBHkq-6QNGfWairN9I57rFwgJYEshgoYgL-_M3sWjKnDuRoX8KRqgb94vkjhGB_Cbg6q1p8YkYTTcDe4b1h99DHlMvXcckhpSuuVJjDKVQhlUchzA0QcydAZ0Yv5&l10n=ru&cts=1440004977768&mc=5.025470739378896',
'jv_visits_count_jeRX8IfQ9u' => '2',
'jv_gui_state_jeRX8IfQ9u' => 'WIDGET',
)"
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 August 2015 - 08:14 PM

WARNING: Invalid argument supplied for foreach()
Line: 120

Это ключевое. 120-я строка указанного файла, где циклу foreach подсовываются некорректные данные. foreach требует для обработки массив, по которому и производит обход. Если массив пуст (ни одного элемента), то все зашибись, нет ни одной итерации, проходим мимо массива, а вот если такого массива нет вообще (NULL), то до PHP 5.3 (не совсем уверен в версии) все было ровно как "массив пуст", а с какой-то версии PHP начал генериться WARNING (подчеркиваю - не ERROR, а WARNING) о том, что подсунут invalid argument, т.е. NULL вместо массива. Даже в штатном ShopCMS из коробки есть несколько таких мест.

Решение:

В местах, вызывающих эту ошибку перед foreach вставлять
if (is_array($xxx))
где $xxx - массив, обрабатываемый в foreach.

PS. В принципе это WARNING, и (в данном случае) абсолютно ни на что не влияет. Можно просто запретить WARNING-и
настройками PHP.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 hedhedhed

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 4
Начинающий

Отправлено 19 August 2015 - 08:43 PM

То, что это 120 строка и проблема там, и то, что это всего лишь warning, это и так понятно.

А "$xxx - массив, обрабатываемый в foreach" - где узнать, что за он ? Пробовал разные, результаты warning'a получаются то меньше, то совсем в несколько строк после исправления. Но совсем не исчезают.

Если не ошибаюсь, строка этой функции содержит "foreach( $getData as $optionID => $value )".
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 20 August 2015 - 09:43 AM

А "$xxx - массив, обрабатываемый в foreach" - где узнать, что за он ?

foreach( $getData as $optionID => $value )

http://www.php.su/learnphp/cs/?cycles#foreach
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 hedhedhed

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 4
Начинающий

Отправлено 20 August 2015 - 10:04 AM

Это я уже нашел, разобрался, спасибо.

Только теперь warning выдает на кэш, файл "incache.php".

"WARNING: Invalid argument supplied for foreach()
Line: 305
File: /home/.../public_html/core/cache/incache.php
Link: /category_635.html
Date: 20.08.15 - 11:06:35
Dump:
array (
'categoryID' => '635',
'PHPSESSID' => '67277c9a225b7fae5bcf72776488951d',
)"


... 305 строка, если правильно посчитал, это "foreach ($getData as $key => $item)"


В этом случае даже на файл на сервере (постоянный) ссылки нет... Нечего править.
  • 0