500 ошибка opencart 2: как найти причину и починить

Содержание

php — OpenCart | Ошибка 500 в категориях и товарах


Вопрос задан


Изменён
5 лет 3 месяца назад


Просмотрен
435 раз

Здравствуйте, столкнулся с такой проблемой, ошибка 500 на страницах категорий и товаров, на остальных страницах проблема не наблюдается, как быть, с чем может быть связана?

http://cd38421.tmweb.ru/

В логах множество таких ошибок:

Aug 12 11:47:03 bone012 apache_error: cd38421.tmweb.ru [Sat Aug 12 11:47:03 2017] [error] [pid 15721] sapi_apache2.c(325): [client
92.53.115.234:53536] PHP Fatal error: Uncaught exception ‘Exception’ with message ‘Error: Table ‘cd38421_generic.oc_genericshopbf_filter’ doesn’t exist
Error No: 1146
CREATE TEMPORARY TABLE oc_genericshopbf_tmp_product (PRIMARY KEY (product_id)) SELECT p. product_id, p.sort_order, «1» AS match_filters, (IF(MIN(ps.price) IS NOT NULL, MIN(ps.price), IF(MIN(pd2.price) IS NOT NULL, MIN(pd2.price), p.price))) AS actual_price FROM oc_genericshopproduct AS p INNER JOIN oc_genericshopproduct_to_store AS p2s ON (p2s.product_id = p.product_id) INNER JOIN oc_genericshopbf_filter AS f ON (p.product_id = f.product_id) INNER JOIN oc_genericshopproduct_to_category AS p2c ON (p.product_id = p2c.product_id) LEFT JOIN oc_genericshopproduct_discount AS pd2 ON (pd2.product_id = p.product_id \n AND pd2.quantity = ‘1’\n AND (pd2.date_start = ‘0000-00-00’ OR pd2.date_start < NOW())\n AND (pd2.date_end = ‘0000-00-00’ OR pd2.date_end > NOW())\n AND pd2.customer_g in /home/c/cd38421/public_html/system/library/db/mysqli.php on line 40

  • php
  • opencart






7







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации


Почта

Необходима, но никому не показывается




Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки


Типичные ошибки при установке модулей в OpenCart 2 и OpenCart 3

Содержание

 

Ошибки при установке модуля через менеджер расширений

Internal Server Error (Ошибка 500)

Внимание! Описание данной ошибки читать обязательно всем!

Ошибка Internal Server Error — проявляется тогда, когда в настройках сервера выключен показ ошибок.

Чтобы убедиться, что у Вас отключен показ ошибок в настройках сервера, проверьте настройки с помощью функции phpinfo(). На рисунке показан скрин, как быть НЕ ДОЛЖНО на следующем снимке экрана.

Что делать?

Необходимо включить показ ошибок в настройках хостинга (сервера). Если не знаете как, обращайтесь в их службу поддержки.

Что будет в результате?

После включения ошибок Вы по факту не устраните проблему, но зато вместо абстрактной надписи Internal Server Error (что следует читать как «что-то не так с настройками сервера»), Вы увидите реальную причину сбоя. То есть, там будет описание ошибки на английском языке, с которой уже можно работать.

А если не помогло?

Кроме глобальных настроек показа ошибок на хостинге, в OpenCart также есть подобная настройка (см Система — Настройка магазина — Сервер — Пункт «Показывать ошибки»). Почем же я говорю об этом в последнюю очередь? Потому что частенько при глобальном запрете на показ ошибок данная функция OpenCart не срабатывает. Это, конечно, зависит от настроек конкретного хостинга, тем не менее, это весьма распространенное явление.

Внимание!

Проблемы, которые возникают исключительно при установке расширений (модулей) в OpenCart 3 (ocStore 3), вынесены на отдельную страницу — https://opencart-guide.com/post/problemy-s-ustanovkoj-modulej-v-opencart-3/.

К содержанию ↑

Ошибка «Неверный тип файла»

На английском языке эта ошибка называется «Invalid file type!«. Появляется тогда, когда в качестве расширения загружается не тот файл, который нужно. Чаще всего такая ошибка случается при попытке установить модуль по старинке. То есть, на этапе установки пользователь распаковывает установочный архива some-name.ocmod.zip, загружает файлы модуля по FTP и затем пытается установить файл install.xml через менеджер расширений. Однако, чтобы модификатор соответствовал формату, необходимо переименовать файл install.xml на install.ocmod. xml

Есть еще один вариант возникновения такой ошибки.

При скачивании модуля иногда предлагается скачать под конкретную версию, а иногда — одним архивом. Когда для скачивание предоставляется только один архив, это означает, что, скорее всего, в нем находятся установочные архивы для отдельных версий + файлы readme.txt с описание установки.

В общем, пригодные установочный пакет должен иметь расширение *.ocmod.zip (для архивов) или *.ocmod.xml (для отдельных модификаторов).

К содержанию ↑

Кракозябры при установке модуля

При установке модуля через менеджер расширений Вы увидели кракозябры, вместо описания ошибки. Выглядит это примерно вот так:

  • Во-первых, там все-таки различаются ключевые слова. К примеру, ftp_login(), что уже намекает на то, в чем именно состоит ошибка.
  • Во-вторых, чтобы прочитать это закодированное json-сообщение, можно декодировать его через json_decode().
  • В-третьих, можно переключить язык админки на английский, и тогда описание ошибки будет на английском языке, что будет иметь читаемый вид.

К содержанию ↑

Ошибки, содержащие слово ftp_…()

ftp_login()

Такая ошибка значит, что php-скрипт не смог залогиниться по ФТП с теми данными, что Вы прописали в Система — Настройки — Настройки магазина — Вкладка «FTP».

ftp_chdir()

<b>Warning</b>: ftp_chdir(): Can\’t change directory to ftp.server… : failed: No such file or directory in <b>…/admin/controller/extension/installer.php</b> on line <b>298</b>…

Зачастую ошибка связана с тем, что в настройках ФТП не правильно указан путь к корневой папке сайта, относительно той папки, которая является корневой для данного ФТП-пользователя. Причем к этим папкам нет прав доступа.

ftp_nlist() SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data OK <b>Warning</b>: ftp_nlist(): listen() failed: Operation not permitted (1) in <b>/…/public_html/admin/controller/extension/installer. php</b> on line <b>327</b> Зачастую ошибка связана с тем, что в настройках ФТП вообще не указан путь к корневой папке сайта. Причем к этим папкам нет прав доступа.

Call to undefined function zip_open()

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data <b>Fatal error</b>: Call to undefined function zip_open() in <b>/var/www/html/system/storage/modification/admin/controller/extension/installer.php</b> on line <b>120</b><br /> Такая ошибка появляет и в том случае, когда для загрузки модулей через менеджер расширений используется FTP, и в том, когда установлен модификатор localcopy.ocmod.xml . Ошибка состоит в том, что настройках сервера не включена функция для распаковки zip-архива. С такой ошибокй нужно обращаться в службу поддержки хостинга

К содержанию ↑

Fatal error: Class ‘DOMDocument’ not found

Решение: Необходимо установить библиотеку php-dom. Подробнее эта ошибка описана отдельно — https://opencart-guide. com/post/fatal-error-uncaught-error-class-domdocument-not-found-v-opencart/

К содержанию ↑

copy(filename): failed to open stream

OK

<b>Warning</b>: copy(/var/www/sites/opencart-2102.loc/admin/view/javascript/sortable/CONTRIBUTING.md): failed to open stream: Permission denied in <b>/var/www/sites/opencart-2102.loc/system/storage/modification/admin/controller/extension/installer.php</b> on line <b>284</b>…

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

К содержанию ↑

mkdir(): No such file or directory in …

<b>Warning</b>: mkdir(): No such file or directory in …

Могут быть 2 причины:

  1. Не настроенные права доступа на папку /system/ — https://forum.opencart.com/viewtopic.php?t=155122
  2. Отсутствие папки /system/storage/upload/ (может быть «потеряна» при манипуляциях с сайтом (переход с версии 1.5.x на версию 2. x или подобное)

К содержанию ↑

Модификатору необходим уникальный id код!

Ошибка случается при установке некорректного установочного модификатора (xml-файла). Есть вариант, когда разработчики действительно забывают внести секцию <code>. Этот случай обсуждался вот здесь. Но, кроме этого, точно такая же ошибка выдавалась мне, когда тег <code> присуствовал, а вот вот закрывающий тег </operation> случайно был удален. В этом случае, по идее xml-файл должен был быть перестать валидным, но вместо этого OpenCart ругался на уникальный id-код.

К содержанию ↑

invalid argument supplied for foreach() in …/system/storage/modification/admin/controller/extension/installer on line 247

В редких случаях, когда на сайте установлен localcopy.ocmod.xml + еще какой-то модуль «лезет» в установку модулей, бывает новая ошибка invalid supliment argument supliment for foreach() in …/system/storage/modification/admin/controller/extension/installer. php on line 247 Честно говоря, сам я ее еще никогда не решал. И ко мне обращались с ней всего 2-3 раза и я сказал, что это ошибка точно не в моем модуле. Возможно (хотя это не факт), данная ошибка уже была пофиксина в русскоязычном сообществе:

  • Официальная страница для скачивания модификатора — https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=18892&filter_search=QuickFix
  • Страница на скачивание поправленного файла на русскомязычном форуме, где устранен какой-то баг, но какой именно я точно не проверял — https://opencartforum.com/topic/91379-baga-v-localcopyocmodxml/

К содержанию ↑

Не отображается модуль

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

Такое происходит, если для установки модулей в системе включен ФТП. При этом неверно указан путь к корневой папке сайта.

Зачастую FTP-пользователь создается с правом доступа к корневой папке хостинга, а не конкретного сайта. В итоге файлы загружаются на уровень выше, чем находится папка с сайтом. Проверить, куда загрузились папки модуля, можно через ФТП-менеджер.

Конкретный пример такой ошибки обсуждался здесь — https://opencartforum.com/topic/81003-ne-otobrazhaetsya-modul/

Панацеей от проблем с ошибками, начинающимися на ftp_…, является модификатор localcopy.ocmod.xml. Установите его, и больше не «парьтесь» о правильных настройках ФТП.

Еще одна возможная причина, почему модуля нет в списке модулей — это нетипичная папка с языком админки. При загрузке расширений на OpenCartForum требуется только русский и английский языки. И если у Вас другой язык, то надо просто зайти в папку с языковыми файлами и скопировать файл модуля из папки русского языка в любой другой язык, который у Вас используется.

К содержанию ↑

Ошибка в списке модулей при нажатии кнопку «Установить»

Site error: the ionCube PHP Loader needs to be installed

Полный текст ошибки: Site error: the ionCube PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking. Please visit get-loader.ioncube.com for install assistance. Также это может выглядеть следующим образом:

Не все модули выдают эту ошибку на этапе ативации в списке модулей. Иногда она вскрывается на этапе захода в настройки модуля или при обращении к какому-то отдельному функционалу.

Данная ошибка связана с тем, что на сервере (хостинге) не установлен IonCube Loader.Что делать? Необходимо включить IonCube Loader в настройках хостинга или установить этот модуль в случае с выделенным сервером. Если Вы не знаете, как это сделать, то обратитесь в поддержку хостинга.

Если в описании ошибки встречается фраза «corrupted file» — значит, при загрузке по FTP не была использована кодировка utf-8

Если даже при загрузке по FTP в режиме кодировки utf-8 (или модуль был установлен через Установка расширений), но ошибка все равно остается, тогда и только тогда это однозначно говорит о поврежденности файлов в модуле. Лишь в таком случае имеет смысл писать об этой ошибке автору модуля

К содержанию ↑

Внутренняя ошибка сервера Magento 500 и как ее исправить Борьба с внутренней ошибкой сервера HTTP 500 может отнять ваше драгоценное время и ресурсы. В свете этого давайте рассмотрим наиболее вероятные причины этих ошибок и решения, которые разработчики должны использовать для их устранения.

Содержание: Magento 500 Ошибка

  • Что такое внутренние ошибки сервера Magento 500?
  • Почему возникает ошибка Magento 500?
  • Возможные исправления ошибки Magento 500
    • Исправление прав доступа к файлам
    • Исправление ограничений памяти
    • Исправление проблем с файлом .htaccess
    • Исправление проблем со сторонними плагинами
    • Отключить режим обслуживания Magento
    • Устранение проблемы с версией PHP
    • Исправление отсутствующих расширений
    • Проверка журналов ошибок сервера
    • Запустить Magento 2 Все команды
  • Заключительные слова
  • Часто задаваемые вопросы

Что такое внутренние ошибки сервера Magento 500?

Внутренняя ошибка сервера Magento 500 — это общий код состояния HTTP, который часто может появляться при развертывании или обновлении веб-сайта. Это указывает на то, что на сервере что-то не так.

Иногда ошибка Magento 500 быстро устраняется путем обновления страницы. Но если это не решает проблему сразу, вам, возможно, придется устранить неполадки, чтобы решить проблему.

Давайте рассмотрим возможные причины такого рода ошибок.

Почему возникает ошибка Magento 500?

Существует 4 потенциальных проблемы, которые могут вызвать эту ошибку.

  • Проблемы с разрешениями: Эта ошибка может возникнуть, если вы не установили свои разрешения в соответствии со строгими требованиями Magento.
  • Ограничение памяти: Magento потребляет много ресурсов, и может случиться так, что у вас недостаточно памяти для обработки этих ресурсов.
  • Проблема в файле .htaccess: Магазин Magento, перенесенный с локального хоста на любой другой сервер с неправильной конфигурацией, может привести к внутренней ошибке сервера Magento. Magento сначала обращается к файлу .htaccess, поэтому любая неправильная конфигурация может привести к тому, что на сервере возникнет ошибка Magento 500.
  • Проблемы со сторонними подключаемыми модулями: Установленные сторонние расширения могут быть несовместимы с конфигурацией сервера.

Возможные исправления для ошибки Magento 500

Перед устранением неполадок включите режим разработчика в Magento 2, чтобы выявить причину ошибки. Для этого выполните следующую команду:

 php bin/magento deploy:mode:set developer 

Вот как устранить ошибку Magento 500.

Исправление прав доступа к файлам

Структура каталогов Magento 2 содержит стандартные права доступа к файлам и папкам. Но когда вы устанавливаете расширение или обновляете Magento 2 на сервере, эти разрешения меняются. Это вызывает появление внутренней ошибки сервера Magento 500 при входе в панель администратора.

Чтобы это исправить, измените права доступа к файлу index. php в корневом файле с 664 на 644 через файловый менеджер вашего сайта. Сброс разрешений может исправить ошибку Magento 500.

Чтобы установить разрешения, выполните следующие команды:

 find . -type f -exec chmod 644 {} \;
найти . -type d -exec chmod 755 {} \;
найти ./var -type d -exec chmod 777 {} \;
найти ./pub/media -type d -exec chmod 777 {} \;
найти ./pub/static -type d -exec chmod 777 {} \;
чмод 777 ./приложение/и т.д.
чмод 644 ./приложение/и т.д./*.xml
chmod u+x bin/Magento 

Все еще застрял? Cloudways предоставляет самый простой способ сбросить права доступа к файлам.

Как исправить права доступа к файлам в Cloudways?

  1. Войдите на свою платформу Cloudways, используя свои учетные данные.
  2. В верхней строке меню откройте Приложения .
  3. Выберите нужное приложение.
  1. Выберите Настройки приложения .
  1.  Прокрутите вниз до вкладки «Общие», чтобы увидеть вариант «Сбросить права доступа к файлам/папкам» . Проверьте раскрывающийся список рядом с этой опцией, чтобы выбрать нужного пользователя (мастер или пользователь приложения).
  1.  Нажмите, чтобы сбросить права доступа к файлам, которые вы хотите установить.
  2. Нажмите « Сохранить изменения ».

Проверьте разрешения, а затем обновите страницу, чтобы проверить, исчезла ли ошибка 500.

Исправление ограничений памяти

Внутренняя ошибка сервера 500 Magento может появиться на странице продукта или оформления заказа на веб-сайте Magento 2, когда ваш сервер не может предоставить ресурсы для ответа на запрос. Чтобы решить эту проблему, увеличьте лимит памяти в файле php.ini или файле .htaccess.

Для файла .htaccess напишите или измените строки, как показано ниже:

  c>
php_value memory_limit 256M

Для файла php.ini добавьте или измените строки, как показано ниже, в зависимости от состояния сервера:
memory_limit = 1024M 

Если вы не можете внести эти изменения из-за отсутствия разрешений на вашем сервере, попросите хостинг-провайдера внести эти изменения.

Есть более простой способ устранить ограничения памяти с помощью Cloudways.

Как исправить ограничение памяти в Cloudways?

  1.  В разделе Управление сервером выберите Настройки и пакеты .
  1.  В основных настройках настройте ограничение памяти в соответствии с потребностями.
  1. Нажмите « Сохранить изменения» .
  2. Обновите страницу еще раз.

Исправление проблем с файлом .htaccess

Чтобы исправить внутреннюю ошибку сервера 500, вызванную неправильной конфигурацией в файле . htaccess, попробуйте переименовать или удалить файл .htaccess и перезагрузить веб-сайт еще раз, чтобы проверить, исправлена ​​ли ошибка.

Если внутренняя ошибка сервера Magento 500 устранена, значит, возникла проблема с конфигурацией файла .htaccess, которую необходимо исправить. Позаботьтесь о том, чтобы избежать проблем с неработающими ссылками 404 в вашем магазине с помощью этого исправления.

Исправление проблем со сторонними плагинами

Возможно, вы столкнулись с внутренней ошибкой сервера Magento из-за установки стороннего расширения или обновления расширения, которое включает режим обслуживания или создает проблемы совместимости версий после настройки.

Чтобы исправить это, просто отключите мод, выполнив следующую команду:

 php bin/magento mod:disable 

Или обратитесь в службу поддержки вашего расширения, чтобы исправить это.

Отключить режим обслуживания Magento

500 внутренних ошибок сервера могут появиться в режиме обслуживания. Разработчики часто включают режим обслуживания для развертывания веб-сайта на другом сервере, помещая файл «maintenance.flag» в корневую папку и изменяя разрешения index.php на 666.

Чтобы исправить это, отключите режим обслуживания, удалив файл Maintenance.flag или выполнив следующую команду:

 php bin/magento Maintenance:disable 

После этого измените права доступа к файлу index.php на 755 и очистите кэш вашего магазина Magento 2.

Используйте команду blow для изменения разрешений index.php:

 chmod 775 -R index.php 

Исправление проблемы с версией PHP

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

Попробуйте следующую команду для обновления версии PHP из ssh:

 sudo apt update

sudo apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath 

Как исправить версию PHP проблема в Cloudways?

  1. В разделе Управление сервером выберите Настройки и пакеты .
  1. На вкладке Packages выберите версию PHP из раскрывающегося списка.
  1. Нажмите Сохранить изменения.

Исправление отсутствующих расширений

Отсутствующие расширения или модули на вашем сервере или в конфигурации PHP могут быть причиной ваших внутренних ошибок 500 сервера. Узнайте, какое расширение отсутствует, и установите его, чтобы устранить ошибку.

Установка расширения CURL

Чтобы установить и исправить отсутствующее расширение CURL, используйте следующую команду:

 Sudo apt-get install curl libcurl3 libcurl3-dev php5-curl 

Проверьте журналы ошибок сервера

Проверьте файлы журналов, чтобы определить реальную проблему.

Исправление журналов Apache

Чтобы устранить отсутствующую конфигурацию на вашем сервере или неверные команды в ошибке конфигурации сервера, проверьте журналы веб-сервера.

Для Apache каталог журналов:

 /var/log/httpd/ -> centos
/var/log/apache2/ -> debian, ubuntu 

Список каталогов журнала ошибок

Magento 2 Logger может помочь вам определить, какой файл журнала вам нужно отладить для устранения проблемы. Включение режима разработчика для перезагрузки веб-сайта и проверки журнала ошибок магазина Magento 2 в каталоге var/log.

Запустить все команды Magento 2

Ошибку сервера Magento 500 можно устранить, выполнив следующие строки:

 rm -rf generate/*
rm -rf вар/*
компакт-диск паб / статический
rm -r админhtml
rm -r интерфейс
Установка php bin/magento:обновление
Установка php bin/magento: di: компиляция
Установка php bin/magento: статическое содержимое: развертывание -f
Индексатор php bin/magento: переиндексировать
Кэш php bin/magento: очистить
Кэш php bin/magento: сбросить 

Заключение

Избегайте ошибки Magento 500, проявляя осторожность во время технического обслуживания магазина. Убедитесь, что вы используете правильные права доступа к файлам в корневом каталоге Magento. Перед обновлением или установкой расширения, вызывающего проблемы, составьте ряд рекомендаций и следуйте им. Также ошибка Magento 503 также может быть причиной ошибки сервера.

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

Часто задаваемые вопросы (FAQ)

Часто задаваемые вопросы

Что такое внутренняя ошибка сервера 500?

Внутренняя ошибка сервера HTTP 500 — это код ответа, указывающий на то, что на вашем сервере возникли проблемы.

Как исправить ошибку HTTP 500 в Magento 2?

Выясните фактическую причину ошибки и примените следующие решения одно за другим:

  • Изменить права доступа к файлам Magento
  • Исправить ограничение памяти
  • Переименуйте или удалите файл .htaccess
  • Отключить режим обслуживания
  • Исправить отсутствующее расширение
  • Исправление версии PHP
  • Исправление проблем со сторонними расширениями
  • Проверка журналов ошибок веб-сервера
  • Выполнить все команды

Поделитесь своим мнением в разделе комментариев.
КОММЕНТАРИЙ СЕЙЧАС

Поделиться этой статьей

Абдур Рахман

Абдур Рахман — специалист по Magento в Cloudways. Он амбициозен и стремится учиться и делиться информацией об электронной коммерции и развитии Magento посредством практики и экспериментов. Он любит путешествовать и исследовать новые идеи, когда находит время. Свяжитесь с ним по адресу [email protected]

Подключайтесь по телефону:

Твиттер

Форум сообщества

×

Получить наш информационный бюллетень

Получайте первыми последние обновления и руководства.

Спасибо, что подписались на нас!

Вопрос — резервное копирование не работает

Маркировка R
Новый Плескиан