При входе в форму добавления товара virtuemart радует белым экраном ( в браузер выводится пустой html-документ). Обычно является это признаком fatal error в PHP. Заглядываем в LOG-файл - действительно:
[error] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 49 bytes) in …/includes/database.php on line 491
Итак, при выводе “пустой” страницы добавления товара скрипту не хватает памяти (32 МБ, конечно не так уж много, но куда??). Что самое интересное, при редактировании товара (страница та же, только установлен параметр product_id) ошибка не возникает. И ещё, раньше такого вроде не было.
В database.php на 491 строке ничего особо интересного нет - подсказка, что выводится LIST (чего - не совсем ясно)… Элементы “складируются” в массив.. и на очередном не хватает памяти.
Предварительная диагностика подсказывает, что “глюк” из-за большого количества товаров (~22 тыс). Протестировал с “обрезанной” до 7 тыс товаров - всё работает. И правда, в товарах проблема.
Смотрим в сторону файла с формой добавления/редактирования товара
administrator/components/com_virtuemart/html/product.product_form.php
Но как связана страница добавления/редактирования одного товара с количеством товаров? Точно! Есть ведь связанные товары.. Большой multiselect связанных товаров и правда содержит все записи.. однако он выводится и при редактировании товаров.. Странно.. но всякое бывает - проверяем (закомментировать строчку с выводом мультиселекта).. Ан нет.. не влияет.
Ладно.. пробуем по-другому ищем product_id (ведь для имеющегося товара все в порядке.. белый экран только при добавлении Нового товара). Из “сомнительных” (cомнительное в смысле без проверки на “корректность” product_id) мест использования этой переменной видим такое:
$db_items = $ps_product->items_sql($product_id);
После которого идет вывод формы с подстановкой значений.
Проверяем совсем наглым образом - убираем эту строку и последующие, и открываем страницу добавления товара - Открывается!
Добавляем строку (без продолжения) - ошибка.
перейти к решению проблемы пустого экрана