Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Помогите решить проблему PHP Warning: A non-numeric value encountered in


Recommended Posts

Добрый день всем! в какой-то момент на сайте перестала в админке открываться вкладка "ТОВАРЫ"  выдает HTTP ERROR 500 

Очень нужна ваша помощь! :) ocStore 2.3.0.2

 

В журнале ошибок нашел такую ветку :

 

2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 187
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 365
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 365
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 365
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 373
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 377

 

САМ ФАЙЛ ПРИЛОЖИЛ, и также просто расписал код на этих местах

 

 

в строках 180-190 такой код

 

$data['products'] = array();

			$filter_data = array(
				'filter_category_id' => $category_id,
				'filter_filter'      => $filter,
				'sort'               => $sort,
				'order'              => $order,
				'start'              => ($page - 1) * $limit,
				'limit'              => $limit
			);

 

в строках 365-379 такой код

 

$data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

			// http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html
			if ($page == 1) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'canonical');
			} elseif ($page == 2) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'prev');
			} else {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), true), 'prev');
			}

			if ($limit && ceil($product_total / $limit) > $page) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next');
			}

 

category.php

Змінено користувачем AlexTurner
Надіслати
Поділитися на інших сайтах


Попробуйте добавить (int) перед всеми переменными которые участвуют в выражениях и у которых не явный тип

 

((int)$page - 1) * (int)$limit

к примеру

  • +1 2
Надіслати
Поділитися на інших сайтах

судя по ошибке, у вас не в коде проблема, а в том, какое значение в поле.  "не числовое значение". Проверьте поля, на соответствие значений.

Надіслати
Поділитися на інших сайтах

25 минут назад, anboza сказал:

судя по ошибке, у вас не в коде проблема, а в том, какое значение в поле.  "не числовое значение". Проверьте поля, на соответствие значений.

Имеется ввиду в выгрузке товаров проверить? 

28 минут назад, Prorab337 сказал:

Попробуйте добавить (int) перед всеми переменными которые участвуют в выражениях и у которых не явный тип

 


((int)$page - 1) * (int)$limit

к примеру

я попробовал, но ничего не получилось (не уверен что правильно сделал) нужно править во всех полях, даже тех, которые не указаны в ошибке?

Надіслати
Поділитися на інших сайтах


Только что, AlexTurner сказал:

Имеется ввиду в выгрузке товаров проверить? 

в смысле что у вас в полях записано, которые отбираются в массив. Очень похоже, что у вас, например, из кроликов, вычитаются попугаи..

Надіслати
Поділитися на інших сайтах

@AlexTurner  

Да, скорее всего дело в том, что в одном из полей товара или категории, где предполагается числовое значение(цена, порядок сортировки и т.д.) у вас введено не числовое значение.

Оно могло туда попасть и из выгрузки, например, перепутаны поля и описание попало в цену или импортировалось вместе с кавычками или еще что-то.

Если это касается $limit, то проверьте в поле настроек количества выводимого товара что вбито, там могли прописать что-то.

Надіслати
Поділитися на інших сайтах


2 часа назад, AlexTurner сказал:

выдает HTTP ERROR 500

а в логе ошибок сервера что на этот счет?

Надіслати
Поділитися на інших сайтах


Скорее всего проблема в переменной $limit

if (isset($this->request->get['limit'])) {
			$limit = (int)$this->request->get['limit'];
		} else {
			$limit = $this->config->get($this->config->get('config_theme') . '_product_limit');
		}

Вот отсюда она берется.

Проверьте в настройках:

1. В шаблоне: что прописано в поле количество выводимого товара (убедитесь, что там числовое значение)

2. (На всякий случай) Настройки > Опции > Элементов на странице (убедитесь, что там числовое значение)

 

 

Надіслати
Поділитися на інших сайтах


Всем спасибо за такую оперативную помощь! Слава богу что на хостинге был автоматический бекап, откатился на 4 дня, все стало работать. Самое странное что правки не делались с тех пор в этих файлах и в товарах, так и не понял, из-за чего это было. Еще раз всем спасибо!

Надіслати
Поділитися на інших сайтах


1 час назад, AlexTurner сказал:

так и не понял, из-за чего это было

Был такой опыт... Причина до смешного банальна, в админке в настройках, в поле перед цифровым значением был случайно вставлен пробел.

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 1 year later...

позвольте реанимировать тему ?

2020-03-21 18:28:14 - PHP Warning:  A non-numeric value encountered in ../catalog/model/extension/total/shipping.php on line 29

Содержимое файла привожу полностью (29я строка 4я снизу):

<?php
// *    @copyright    OPENCART.PRO 2011 - 2017.
// *    @forum    http://forum.opencart.pro
// *    @source        See SOURCE.txt for source and other copyright.
// *    @license    GNU General Public License version 3; see LICENSE.txt

class ModelExtensionTotalShipping extends Model {
    public function getTotal($total) {
        if ($this->cart->hasShipping() && isset($this->session->data['shipping_method'])) {
            $total['totals'][] = array(
                'code'       => 'shipping',
                'title'      => $this->session->data['shipping_method']['title'],
                'value'      => $this->session->data['shipping_method']['cost'],
                'sort_order' => $this->config->get('shipping_sort_order')
            );

            if ($this->session->data['shipping_method']['tax_class_id']) {
                $tax_rates = $this->tax->getRates($this->session->data['shipping_method']['cost'], $this->session->data['shipping_method']['tax_class_id']);

                foreach ($tax_rates as $tax_rate) {
                    if (!isset($total['taxes'][$tax_rate['tax_rate_id']])) {
                        $total['taxes'][$tax_rate['tax_rate_id']] = $tax_rate['amount'];
                    } else {
                        $total['taxes'][$tax_rate['tax_rate_id']] += $tax_rate['amount'];
                    }
                }
            }

            $total['total'] += $this->session->data['shipping_method']['cost'];
        }
    }
}

 

Надіслати
Поділитися на інших сайтах

14 минут назад, gyurza2000 сказал:

$this->session->data['shipping_method']['cost'];

(float)$this->session->data['shipping_method']['cost'];

  • +1 2
Надіслати
Поділитися на інших сайтах

  • 2 months later...

у меня ряд таких ошибок вылез из-за нехватки места на хостинге.   удалил кэш картинок (задолбал расти каждый день).  почистил остальные кэши и все нормально.

Змінено користувачем remPC
Надіслати
Поділитися на інших сайтах


  • 1 month later...
  • 3 months later...

Добрый вечер всем.

Переименовал название доставки после чего полетели ошибки:

Warning: A non-numeric value encountered in /httpdocs/catalog/model/extension/shipping/item.php on line 32Warning: A non-numeric value encountered in /httpdocs/catalog/model/extension/shipping/item.php on line 34

 

Помогите пожалуйста.

 

    $quote_data['item'] = array(
                'code'         => 'item.item',
                'title'        => $this->language->get('text_description'),
  32 строка            'cost'         => $this->config->get('item_cost') * $items,
                'tax_class_id' => $this->config->get('item_tax_class_id'),
 34строка-               'text'         => $this->currency->format($this->tax->calculate($this->config->get('item_cost') * $items, $this->config->get('item_tax_class_id'), $this->config->get('config_tax')), $this->session->data['currency'])
            );
 

Надіслати
Поділитися на інших сайтах


  • 3 months later...

О и у меня появилась такие же ошибки, причем появляется когда им захочется:

 

2021-03-11 4:29:02 - PHP Warning:  A non-numeric value encountered in /site.ru/catalog/controller/product/manufacturer.php on line 171

 

167			$filter_data = array(
168				'filter_manufacturer_id' => $manufacturer_id,
169				'sort'                   => $sort,
170				'order'                  => $order,
171 			'start'                  => ($page - 1) * $limit,
172				'limit'                  => $limit
173			);

2021-03-11 4:29:02 - PHP Warning:  A non-numeric value encountered in /site.ru/catalog/controller/product/manufacturer.php on line 334

2021-03-11 4:29:02 - PHP Warning:  A non-numeric value encountered in /site.ru/catalog/controller/product/manufacturer.php on line 334

2021-03-11 4:29:02 - PHP Warning:  A non-numeric value encountered in /site.ru/catalog/controller/product/manufacturer.php on line 334

Причем три раза подряд.

334			$data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

2021-03-11 4:29:02 - PHP Warning:  A non-numeric value encountered in //site.ru/catalog/controller/product/manufacturer.php on line 346

 

345			if ($limit && ceil($product_total / $limit) > $page) {
346			    $this->document->addLink($this->url->link('product/manufacturer/info', 'manufacturer_id='. $this->request->get['manufacturer_id'] . $url . '&page='. ($page + 1), true), 'next');
347			}

 

Через 10 секунд, опять повторилось.

Следующий раз повторилось через 5 часов

 

Как полечить этот глюк ?

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.