25.05.2019 |
Категория FAQ
Разберёмся как сделать включение / отключение показа ошибок на сайте. Через админку и через файл htaccess.
Показ ошибок (Notice, Warning, Fatal Error) это важная и нужная функция, хорошо что она есть! Иначе бы вебмастера месяцами искали вручную ошибки в коде своего сайта.
Как включить показ ошибок из админки Joomla 3?
Для этого в админке Joomla переходим «Система — Общие настройки».

Переходим на вкладку «Сервер», там увидите опцию «Сообщения об ошибках». Выбирайте режим «Максимум».

Сохраняем.
После этого на страницах сайта будут появляться сообщения об ошибках, если таковые имеются. Это полезно, если где-то на сайте у вас появляется белый экран.
После включения показа сообщений об ошибках на белом экране вы увидите тип ошибки и её описание.
По этому описанию можно найти решение в поиске Яндекса или Гугла.
Включение показа ошибок php через configuration.php
Если нет доступа к админке, или она не работает, то показ ошибок можно включить через файл configuration.php, который находиться в корневой папке вашего сайта.
В нём есть директива
public $error_reporting = 'default';
Чтобы включить показ ошибок, измените значение default на maximum
Как включить показ ошибок через .htaccess
Если у вас не Joomla, а свой скрипт или по каким то причинам не получается включить сообщения об ошибках первыми двумя способами, то это можно сделать через файл .htaccess, который также находится в корневой папке вашего сайта.
Открываем .htaccess — обратите внимание точка впереди. Если у вас нет такого файла, то создайте его.
В CMS системах он обычно называется htaccess.txt и его достаточно просто переименовать в .htaccess
В самом верху добавляем строчку:
php_flag display_errors on
А строчка:
php_flag display_errors off
выключает показ ошибок.
Какие сообщения об ошибках php бывают?
Самые частые это:
Notice — уведомление о незначительных ошибках в коде. Обычно работоспособность сайта при этом сохраняется.
Просто в шапке выходят такие вот уведомления.
Warning — предупреждение о более серьёзных ошибках. Иногда при таком предупреждении работоспособность сайта также сохраняется, иногда белый экран.
Fatal Error — предупреждение о критических ошибках, при которых выполнение сценариев невозможно. Сопровождается белым экраном.
Отключайте показ ошибок!
После включения и наладки сайта обязательно отключайте показ ошибок. Потому что это НЕ безопасно, да и посетителям сайта их видеть незачем.
Желаю вам всего хорошего!
Errors, warnings, alerts and notices can be displayed from any component, module, plugin or template using the methods outlined below.
// Get a handle to the Joomla! application object
$application = JFactory::getApplication();
// Add a message to the message queue
$application->enqueueMessage(JText::_('SOME_ERROR_OCCURRED'), 'error');
/** Alternatively you may use chaining */
JFactory::getApplication()->enqueueMessage(JText::_('SOME_ERROR_OCCURRED'), 'error');
The second argument to the enqueueMessage function is the type of the message. The default is message, but error results in a different style for the message. The message will be displayed in place of a special jdoc:include statement in your template. Place the following in your template at the location where you want messages to appear.
<jdoc:include type="message" />
Message[edit]
Message
JFactory::getApplication()->enqueueMessage('Message');
Notice[edit]
Notice
JError::raiseNotice( 100, 'Notice' );
Warning[edit]
Warning
JError::raiseWarning( 100, 'Warning' );
Error[edit]
Error
JError::raiseError( 4711, 'A severe error occurred' );
Joomla! 3.x is Bootstrapped[edit]
Since Joomla!
uses Bootstrapped templates, the messages will use the standard Bootstrap CSS styles for Alerts.
See: https://getbootstrap.com/2.3.2/components.html#alerts
The general syntax remains:
JFactory::getApplication()->enqueueMessage('Your Message', 'type');
Where type can be one of
- ‘message’ (or empty) — green
- ‘notice’ — blue
- ‘warning’ — yellow
- ‘error’ — red
See Also[edit]
- JError on api.joomla.org
- JApplication on api.joomla.org
Вступление
Найти ошибку, которая привела к некорректной или фатальной ошибки Joomla одна из самых трудных задач при работе с системой. Пожалуй, невозможно перечислить все вероятные ошибки, которые вы можете теоретически встретить при общении с Joomla. Более правильным будет указать пути, по которым нужно двигаться в поиске ошибок и их отладки.
Основные языки программирования, на которых написана CMS Joomla это два сценарных языка PHP и JavaScript. При этом сценарный язык (анг.scripting language) PHP является основным языком Joomla и, как правило, ошибки, возникающие при работе с Joomla это результат его неправильной (некорректной) работы.
В этой статье я сформулирую первые действия, что сделать сначала, чтобы осуществить правильный поиск ошибок и после найти отладку (способ исправления) «неправильного» скрипта вашей Joomla.
Прежде всего, ошибку нужно увидеть. Речь идет не о результатах ошибки (пропадании сайта и т.п.). Речь идет, как увидеть причину ошибки, если хотите определить диагноз ошибки. От этого зависит дальнейшая отладка системы и исправление ошибки.
Видимость ошибок в браузере
Первое место, где вы видите сообщение о возникшей серьезной ошибке, это ваш рабочий браузер. Вы наверняка встречали при открытии сайтов, вместо страниц сайта пустое окно браузера и в нем цифровая (кодовая) ошибка. И речь не идет об ошибках класса 4×× (Ошибки со стороны клиента), например, ошибка 403-Ничего не найдено. Речь о более серьезных ошибок, начинающихся с цифры «5». Это класса ошибок 5×× (Ошибки со стороны сервера).
Ошибка 500
Ошибка 500 это любая ошибка со стороны сервера, которая не расшифрована в остальных кодах 501-510. Это наиболее часто встречающаяся ошибка, связанная с ошибками в коде системы. Если при работе с системой Joomla вы в браузере видите сообщение об ошибке 500 , эта ошибка выдается сервером Apache и ее причину нужно смотреть в логе ошибок вашего веб-сервера. (О логах ошибок веб-сервера читать ТУТ).
Как правило, из лога ошибок, будет понятно, какой файл системы привел к ошибке. После этого нужно переходить к этому конкретному файлу и решать конкретную, уже локализованную причину ошибки. Но это не всегда так просто. Из журнала лога ошибок, бывает не понятно, какие конкретные действия приводят к ошибке и какой PHP -код ее сформировал.
Вообще говоря, интерпретатор PHP всегда определяет возникающие ошибки. И показ ошибок Вам, изначально, зависит от настроек конкретного сервера. Сервер должен быть настроен так, чтобы интерпретатор PHP имел возможность сообщить об ошибке, а вы могли увидеть это сообщение. Причем интерпретатору должен быть указан вид вывода сообщения об ошибке. Это или окно браузера или запись в журнале ошибок или и то и другое по выбору.
Настройка вывода ошибок зависит от вашего хостинга.
Вывод ошибок на рабочем сервере
На рабочем сервере (коммерческом хостинге) включение вывода ошибок ищите в настройках хостинга. Как правило, вывод ошибок по-умолчанию включен, и вывод ошибок настроен как вывод сообщений в журнал ошибок. Убедитесь, что эта функция сервера включена. Опять-таки, по — умолчанию, не имеет смысла включать на рабочем сервере вывод ошибок на экран. Эти ошибки будут видеть все гости сайта и это лишнее. Однако в критических, аварийных ситуациях, можно воспользоваться временно, выводом ошибок на экран. Об этом чуть ниже.
Вывод ошибок на локальном сервере
На локальном (домашнем) сервере, у вас есть все права на любые настройки сервера и вывод ошибок вы можете настроить сами. Наверное, все готовые платформы локального сервера (OpenServers, Денвер, Xmapp и т.д.) уже настроены на вывод ошибок в журнал и/или на экран. Но в том, то и прелесть локального сервера, вы всегда можете изменить любые его настройки.

Настроить вывод ошибок на локальном сервере нужно в файле php.ini.
Для разрешения вывода ошибок в файле php.ini должна быть строка:
error_reporting(E_ALL ^ E_NOTICE);// Добавлять сообщения обо всех ошибках, кроме ошибок NOTICE
// Это значение включено по умолчанию в php.ini
Примечание: NOTICE ошибки это возможные, но не явные ошибки. Например, опечатка, предупреждение о плохом стиле, и.т.п.
error_reporting = E_ALL //Вывод всех ошибок//
Для вывода ошибок в журнал, должна быть строка:
log_errors = On
Для вывода ошибок на экран в файле php.ini должна быть строка:
display_errors = On
Вывод ошибок на экран, во время старта PHP
display_startup_errors=On
Понятно, что замена «on» на «off» все это отключит.
Повторюсь, интерпретатор PHP сам выводит сообщения об ошибках, нужно только разрешить и дать ему возможность (настроить) эти сообщения выводить в журнал на сервере, а при необходимости показывать их на экране.
Но вернемся к рабочим серверам и CMS Joomla. В Joomla есть функция в административной панели сайта, включив которую вы можете выводить ошибки системы на экран.
Вывод ошибок системы в панели Joomla
В CMS Joomla предусмотрено включение режима отладки системы, при которой все, подчеркну ВСЕ, ошибки будут выводиться на экран вместе их возникновения и в режиме реального времени.
Вывод ошибок, режим отладка Joomla 2,5
Административная панель сайта ->Меню ->Сайт->Общие настройки->Система

Вывод ошибок, режим отладка Joomla 3,x
Административная панель сайта-> Меню ->Сайт->Общие настройки->Система

В обоих версиях можно настроить, какой режим вывода ошибок во время отладки должен быть.


Включение режима отладки системы Joomla из панели сайта, может не сработать. Это может произойти, если на вашем хостинге такой режим не включен (в файле php.ini). Если у вас нет доступа к файлу php.ini, а потребность включить режим отладки есть, то просто напишите в support вашего хостинга и попросите временно включить режим вывода ошибок. ( Я так и делаю). После устранения ошибки, верните все в исходное состояние, иначе гости вашего сайта будут видеть все ошибки на экране.
Но и из этой ситуации, есть выход. Есть плагин Joomla, который выводит ошибки системы во всплывающем окне и с видимостью только для вас. Это плагин j!Dump.
Плагин j!Dump Joomla

Это плагин для отладки системы Joomla в реальном времени, с выводом ошибок на экран только для вас. Плагин работает на версиях Joomla 2.5 и 3.х. Устанавливается плагин стандартным способом. В настройках понятен и, по отзывам, вполне работоспособен. На сайте extensions.jоomla.com этот плагин есть.
Итоги статьи
- Итак, при работе с Joomla у вас «выскакивают» ошибки на стороне сервера приводящие к некорректной работе системы или ее отключении (Error). Что делать?
- Если вы не программист и не находитесь в процессе разработки и к этому у вас рабочий (не локальный сервер), то прямиком «идете» на сервер и смотрите журнал ошибок (лог ошибок);
- Если журнал ошибок отсутствует, то в настройках сервера ищите и включаете запись ошибок в журнал;
- Если из журнала не удалось понять причину ошибки, включаете режим «Отладка системы» в административной панели сайта;
- Если режим отладки не включается, обращаетесь в support сервера с просьбой такой режим временно включить. Включается он в файле php.ini;
- Если вы работаете на локальном (домашнем) сервере, то самостоятельно проверьте настройки возможности интерпретатора PHP для вывода, показа и записи PHP ошибок, возникающих при работе. Опять таки, файл php.ini.
Это все, что хотелось сказать про Поиск и вывод PHP ошибок Joomla!
©Joomla-abc.ru
Другие статьи
Ошибки Joomla
-

Offline
OlegM
Russian Joomla! Team
Команда форума- Регистрация:
- 12.04.2007
- Сообщения:
- 4 311
- Симпатии:
- 375
- Пол:
- Мужской
Как вручную включить режим отладки в Joomla всех версий: 1.0, 1.5, 1.6-2.5, 3.0-3.1
Файл: configuration.php
Joomla! 1.0
Переменная: $mosConfig_error_reporting
-
$mosConfig_error_reporting = ‘-1’;
Возможные значения:
- 6143 — отображать все ошибки;
- 7 — отображать простые ошибки;
- 0 — выключить (не отображать ошибки);
- -1 — по умолчанию (использовать настройки системы).
Joomla! 1.5
Переменная: $error_reporting
-
var $error_reporting = ‘-1’;
Возможные значения:
- 6143 — отображать все ошибки (по максимуму);
- 7 — отображать простые ошибки;
- 0 — выключить (не отображать ошибки);
- -1 — по умолчанию (использовать настройки системы).
Joomla! 2.5 и 3.0
Переменная: $error_reporting
-
public $error_reporting = ‘default’;
Возможные значения:
- development — отображать все ошибки, включая уведомления (режим отладки для разработчиков);
- maximum — отображать все ошибки (по максимуму);
- simple — отображать простые ошибки;
- none — выключить (не отображать ошибки);
- default — по умолчанию (использовать настройки системы).
Включение консоли отладки (для Joomla 2.5 — 3.0+)
-
public $debug = ‘1’; // 0 — выключено, 1 — включена
Включение отладки языковых файлов
-
public $debug_lang = ‘1’; // 0- выключено, 1 — включено
Данные отладки, отображаемые в консоли, можно настроить в системном плагине отладки System — Debug (Система — Отладка).
В Joomla 3.0 появилась возможность журналирования устаревших функций PHP.
В Joomla 3.1 появилась возможность отображения журнала в консоли отладки.Последнее редактирование: 25.03.2013
-

Offline
OlegM
Russian Joomla! Team
Команда форума- Регистрация:
- 12.04.2007
- Сообщения:
- 4 311
- Симпатии:
- 375
- Пол:
- Мужской
-
Offline
Clear
Недавно здесь
- Регистрация:
- 16.07.2011
- Сообщения:
- 33
- Симпатии:
- 0
- Пол:
- Мужской
Вот какой вопрос, а можно ли вести отладочный журнал и не высвечивать это на сайте, т.е. чтобы все ошибки записывались в журнале а пользователи их не видели?
-

Offline
OlegM
Russian Joomla! Team
Команда форума- Регистрация:
- 12.04.2007
- Сообщения:
- 4 311
- Симпатии:
- 375
- Пол:
- Мужской
По идее ошибки и так записываются в папку logs, если включен плагин журналирования.
А отображаемую отладочную информацию в Joomla 2.5+ можно настроить в плагине Система — Отладка -
Offline
Clear
Недавно здесь
- Регистрация:
- 16.07.2011
- Сообщения:
- 33
- Симпатии:
- 0
- Пол:
- Мужской
Спасибо, но плагин включен а вот в папке logs только index.html, в котором <!DOCTYPE html><title></title>
А я точно знаю что сайт отключался сегодня 3 раза.
В плагине система-отладка такие настройки: 1,2,3. Подскажите, пожалуйста, что нужно поменять и в каком файле будут сохраняться ошибки?
Поделиться этой страницей
Вступление
Белый экран Joomla, называют «экраном смерти». С одной стороны это правильно, сайт и/или админка недоступны, сайт не работает и срочно нужно это безобразие исправлять. С другой стороны, белый экран, необходим, как оборонительный рубеж от взлома. Поэтому, вы не только должны знать, как исправить белый экран, но и как правильно его настроить. Да, да, именно, правильно настроить белый экран Джумла. С этого и начнем.
Настройка белого экрана
В Joomla есть системная функция вывода (показа) ошибок на сайте. Настройка вывода ошибок находится на вкладке Общие настройки→Сервер→Показ ошибок. По определению нужно поставить показ ошибок в положение «Нет», то есть ошибки показывать не нужно. Поясню почему. Если поставить постоянный показ ошибок, при взломе сайта злоумышленник будет видеть информацию системы и легко преодолеет вашу защиту. Кроме этого, простым посетителям не нужно видеть, даже самые безобидные ошибки на сайте.
Отсюда вывод 1: В рабочем состоянии система Joomla не должна показывать ошибки.
Видим белый экран Joomla
Предположим, пришел день «Ч» и при попытке войти в административную панель и/или при попытке открыть свой сайт вы видите белый экран. Такое простое, белое полотно, как в кинотеатре. В такой ситуации паниковать не нужно. Для начала успокойтесь, если конечно волновались, и вспомните, что вы делали с сайтом до белого экрана.
Скорее всего, вы могли:
- Установить и включить новое расширение;
- Обновить версию Joomlaне проверив ее совместимость с установленными расширениями;
- Обновили, какое либо расширение;
- Или, кто-то, включая вас, капался в коде сайта.
Как видите причин много и прежде всего, нужно найти причину белого экрана. Включим показ ошибок Joomla разными способами.
Как включить показ ошибок из административной панели Joomla
Если вы можете войти в административную панель сайта, включить ошибки не сложно. Для включения показа ошибок открываете вкладку Общие настройки→Сервер и ищите строку «Показ ошибок».

Joomla предлагает несколько вариантов отражения ошибок, от показа по умолчанию, до показа ошибок для разработчиков:
- Нет;
- Показ по умолчанию системы;
- Простой;
- Максимум;
- Для разработчиков.
Чтобы понять, почему не работает ваш сайт, устанавливайте показ ошибок по глубине отражения, от показа по умолчанию до максимума.
Что должно быть, когда включен показ ошибок
После включения, показа ошибок, откройте свой сайт. Теперь вместо белого экрана, система должна вывести информацию о вашей ошибке. В этой информации практически все, что поможет вам ошибку исправить или хотя бы поискать способы ее исправления в Интернет.
Отсюда вывод 2: Показ причин белого экрана с доступом в админку сайта включается на вкладке: Система→Общие настройки →Сервер.
Но это мы выявили ошибки при рабочем доступе в административную панель сайта. А что делать, если белый экран висит вместо админки при попытке в неё войти.
Как включить показ ошибок, если нет доступа в административную панель Joomla
Белый экран Joomla может закрыть вам доступ в административную панель. В этом случае, для включения показа ошибок, идем в каталог сайта по FTP соединению. Здесь нас интересует, конечно же, файл configuration.php– основной файл со всеми настройками системы, которые вы задавали в интерфейсе административной панели.
Важно, для редактирования файла configuration.php копируем его на компьютер, делаем с него копию и открываем копию для редактирования в текстовом редакторе. Я пользую Notepad++, а FTP клиент — FileZilla и еще не разу не пожалел об этом. Редактируем копию configuration.php, оставляя первоисточник для резерва.
В configuration.php ищем строку: error_reporting и ставим значение maximum:
$error_reporting = ‘maximum’; // оно соответствует значению «Максимум» ; в настройках показа ошибок из административной панели.
Сохраняем отредактированный файл и переносим в каталог сайта в режиме перезаписи. Открываем сайт и смотрим сообщение об ошибках.
Отсюда вывод 3: Включить показ ошибок белого экрана можно редактированием файла configuration.php.
Ищем причины белого экрана Joomla в логах сайта
На этом сайте я еще не писал, как работать с логами сайта Joomla, поэтому кратко.
Вам может повести и у вас правильно настроенный хостинг, который все ошибки, происходящие с сайтом, пишет в файл error.log. В зависимости от настроек, доступ к нему может быть различный: из административной панели хостинга, из каталога по FTP или вы можете запросить его в supportвашего хостера. Важно его найти или получить.
Открываете его в текстовом редакторе и по дате и времени ищите свою системную ошибку. Строка с ошибкой довольно длинная и может показаться непонятной. В принципе понимать нужно две вещи:
- Первая: в начале ошибки должно быть: PHP Warnings или PHP Notice. Первая ошибка серьезнее второй.
- Вторая: в строке ошибки ищите названия расширения Joomla, которое и вызвало эту ошибку.
Теперь сопоставьте эти данные с вашими воспоминаниями по обновлению на сайте или установке новых расширений и поймете, кто виновник белого экрана.
Что делать, если понятна причина белого экрана
Если есть доступ в административную панель, открываете Расширения→Менеджер расширений→Управление. Находите расширение-виновник и как минимум отключаете его. Не забывайте чистить кэш сайта и кэш браузера (кнопка CTRL+F5). Если не помогло — деинсталлируйте расширение и опять чистить кэш сайта и кэш браузера.
Ничего не помогает – белый экран Joomla не пропадает
Если ничего из выше перечисленного не помогло и белый экран не пропадает, делаем следующие шаги.
- не сдавайтесь, я находил решение для самых сложных ошибок. Чаще на англоязычных ресурсах.
- можно плюнуть на поиски ошибок, снести сайт и БД и восстановить их из резервной копии сайта, которую вы должны были сделать перед любыми обновлениями на сайте.
- ищите помощника из профессионалов.
©Joomla3-x.ru
Другие статьи раздела: Администрирование
0 Пользователей и 1 Гость просматривают эту тему.
- 41 Ответов
- 3041 Просмотров

Доброго.
Чистая голая установка 3.7.4, независимо от настройки «Сообщения об ошибках» (Нет, Максимум, Для разработчиков и т.п.) при фатальных ошибках всегда показывается текст ошибки, и не показывается ни файл, ни строка. Например
У меня у одного, или что то поломалось?
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
А делал включить, что покажет?
Всегда одно и тоже, на настройку «Сообщения об ошибках» никакой реакции нет вообще. Только если включить Отладку в настройках, то можно увидеть стек ошибок, и там будет и имена файлов, и номера строк. Но во-первых держать отладку открытой не всегда удобно, а во-вторых меня откровенно говоря больше волнует вопрос, почему в принципе текст ошибки виден, если в настройках задано Нет.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Дебаг, телефон гад исправил, трассировки ошибки должно выдать.
Понятно. Автозамена задолбала реально, отрубаю ее всегда. Будем считать что я прочел мысль
По дебагу сам написал выше.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Это кривой темплейт error.php
Лечиться дабвленем этого
if ( version_compare(phpversion(), '7.0.0', '>=') )
{
// Add the file and line at which the error occured
$error_file = $this->error->getFile();
$error_line = $this->error->getLine();
if ( $error_file )
{
echo '<pre>' .$error_file .':'. $error_line . '</pre>';
}
}
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
А почему у меня таких нет ошибок? 2 раза чистую 3.7.4 ставил.
Или ошибка возникает из-за чего-то?
Записан
Миграция, установка, обновление версий Joomla | Создание сайтов «под ключ» | Эксклюзивные заглушки «offline» | Работа с «напильником» над шаблонами и расширениями
А почему у меня таких нет ошибок? 2 раза чистую 3.7.4 ставил.
Или ошибка возникает из-за чего-то?
Суть в возникновении ошибки. А в ее отображение. Хз с какйо версии я заметил только 3.7.2 во фронте fatal error выдоиться в шаблоне и без указания имени файла и строчки
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Это кривой темплейт error.php
Лечиться дабвленем этого
та понятно, да. но во-первых в админке тоже самое, и если на фронте шаблон все равно переделывать, то в админке как бы… а во-вторых опять таки, больше даже интересует вопрос почему нет реакции на настройку «Сообщения об ошибках».
Хз с какйо версии я заметил только 3.7.2 во фронте fatal error выдоиться в шаблоне и без указания имени файла и строчки
админка тоже. и важна именно версия php, не Joomla. на php5 все будет обычно. связано я так понимаю с изменениями с перехватом ошибок.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
та понятно, да. но во-первых в админке тоже самое, и если на фронте шаблон все равно переделывать, то в админке как бы… а во-вторых опять таки, больше даже интересует вопрос почему нет реакции на настройку «Сообщения об ошибках».
админка тоже. и важна именно версия php, не Joomla. на php5 все будет обычно. связано я так понимаю с изменениями с перехватом ошибок.
Ну это я нашел в баг репорте, так что надеюсь починять. В админке кстати вроде была строка.. Ну а если нет то лечиться так же. Просто я первый раз с этим на фронте столкнулся. А про версии php вкурсе, там на нее собсвенно проверка. Насчет реакции на параметр вроде все верно. fatal То при любом варианте должен выводиться, хотя мб еще настройки php важны
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Насчет реакции на параметр вроде все верно. fatal То при любом варианте должен выводиться, хотя мб еще настройки php важны
Неа, не при любом. Раньше был например просто белый экран, если показ ошибок был выключен. А если включен — то выводился как обычно файл, номер строки, описание ошибки. А уже детализация (простой, максимум, для разработчиков) играла роль что именно показывать, какой уровень — только error, или и warning, или и notice, и т.д. А сейчас всегда выводится описание ошибки, даже если Сообщения об ошибках — Нет.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Неа, не при любом. Раньше был например просто белый экран, если показ ошибок был выключен. А если включен — то выводился как обычно файл, номер строки, описание ошибки. А уже детализация (простой, максимум, для разработчиков) играла роль что именно показывать, какой уровень — только error, или и warning, или и notice, и т.д. А сейчас всегда выводится описание ошибки, даже если Сообщения об ошибках — Нет.
Ну раньше все белого экрана боялись. вот и сделали чтобы не писали типа белый экран… Ну да это уже фруд. Баг репорт на эту тему я видел, вроде.
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
ТОже не сразу понял, что хотелось.
ТС хочет не отображения строк и файла, а чтобы при выставлении показа ошибок на «Нет», ошибка вообще не показывалась.
И я поддерживаю это, посторонним не за чем смотреть лишнюю информацию.
Надо бы посмотреть как формируется $this->error->getMessage()
не этот случайно https://issues.joomla.org/tracker/joomla-cms/10732 закрытый?
Он самый.
ТОже не сразу понял, что хотелось.
ТС хочет не отображения строк и файла, а чтобы при выставлении показа ошибок на «Нет», ошибка вообще не показывалась.
И я поддерживаю это, посторонним не за чем смотреть лишнюю информацию.
Надо бы посмотреть как формируется $this->error->getMessage()
Разговор о фатальных ошибках notice при ‘нет’ не выводятся. Суть в том чтобы при ‘нет’ заместо фатальных ошибок выходил белый экран
А вообще можно пока что в переопредилении сделать как хочеться.
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
В php7 обработчик ошибок, который задаётся при помощи функции set_exception_handler, принимает экземпляры классов Error и Exception, которые, в свою очередь, наследуют интерфейс Throwable. Это новая фича PHP7, с помощью которой фатальные ошибки можно улавливать и грациозно парировать. В PHP5 нет интерфейса Throwable и класса Error — есть лишь класс Exception. Поэтому фатальную ошибку в PHP5 нельзя отловить — она будет вызывать белый экран. Проблема заключается в том, что возможность в PHP есть, а реализации правильной её в Joomla! нет.
Я как-то переписывался с разработчиками на GitHub, они не хотят менять это поведение (я им предлагал вернуть белый экран, пока они не довели до ума обработчик ошибок). Сошлись на том, что обработчик ошибок должен быть переписан. Когда это будет — никто не знает. Это, естественно, напрягает. Решение этой проблемы заключается в том, чтобы переопределить обработчик ошибок на свой. Я это сделал в моём плагине SEF Wizard, где фатальные ошибки обрабатываются согласно установленным директивам PHP и Runtime настройкам.
« Последнее редактирование: 28.07.2017, 02:42:15 от Филипп Сорокин »
Записан
Суть в том чтобы при ‘нет’ заместо фатальных ошибок выходил белый экран
та дело даже не столько в белом экране. пусть будет любая страница, хотя такая как сейчас, главное чтобы Нет означало Нет. а то сейчас оно означает Нет, но все таки чуть-чуть да
короче, да, чтобы никакой информации об ошибке не выводилось, если Нет установлено.
Проблема заключается в том, что возможность в PHP есть, а реализации правильной её в Joomla! нет.
да, все верно, так и есть. я вчера уже ночью долез по коду, разобрался. короче, пока сделал в error.php так
<?php if (JFactory::getConfig()->get('error_reporting')!== 'none') { ?>
<p><?php echo JText::_('JERROR_LAYOUT_PLEASE_CONTACT_THE_SYSTEM_ADMINISTRATOR'); ?></p>
<blockquote>
<span class="label label-inverse"><?php echo $this->error->getCode(); ?></span> <?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8');?> in <b><?php echo htmlspecialchars($this->error->getFile(), ENT_QUOTES, 'UTF-8');?></b> on line <b><?php echo htmlspecialchars($this->error->getLine(), ENT_QUOTES, 'UTF-8');?></b>
</blockquote>
<?php } ?>
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
короче, пока сделал в error.php так
Ещё надо и title подправлять — там тоже выводится ошибка.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Я это сделал в моём плагине SEF Wizard, где фатальные ошибки обрабатываются согласно установленным директивам PHP и Runtime настройкам
У меня это выбивало белый экрана даже при полном выводе ошибок. Я думаю в J4 поправят
да, все верно, так и есть. я вчера уже ночью долез по коду, разобрался. короче, пока сделал в error.php так
А проверку на версию php
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
У меня это выбивало белый экрана даже при полном выводе ошибок.
За вывод ошибок отвечают 2 директивы: error_reporting и display_errors. Они могут быть заданы как в конфигурационных файлах сервера, так и во время исполнения. При этом можно сделать так, что невозможно будет изменить вывод во время исполнения (PHP_ADMIN_VALUE).
Если error_reporting установлен в определённое значение, а display_errors выключен, то ошибки на экран не выводятся — вместо этого логируются в серверные логи. Если же display_errors включён, ошибки и логируются, и выводятся на экран. При настройке в глобальной конфигурации «По умолчанию для системы» так и происходит. Если же выбирается «Простой, Максимум, для разработчиков» и тп, Joomla пытается задавать директивы error_reporting и display_errors во время исполнения (только пытается).
Однако фатальная ошибка на данный момент показывается даже тогда, когда в настройках отключён вывод ошибок. Почему? Потому что сам по себе этот факт не влияет на отлавливание исключения в функции-обработчике ошибок. Именно её необходимо изменить, чтобы добиться желаемого результата. Здесь 2 варианта:
1. Заново повесить обработчик при помощи set_exception_handler
2. Переопределить defines.php и загрузить переделанный класс с тем же именем раньше (более агрессивный способ)
За вывод ошибок отвечают 2 директивы: error_reporting и display_errors. Они могут быть заданы как в конфигурационных файлах сервера, так и во время исполнения. При этом можно сделать так, что невозможно будет изменить вывод во время исполнения (PHP_ADMIN_VALUE).
Если error_reporting установлен в определённое значение, а display_errors выключен, то ошибки на экран не выводятся — вместо этого логируются в серверные логи. Если же display_errors включён, ошибки и логируются, и выводятся на экран. При настройке в глобальной конфигурации «По умолчанию для системы» так и происходит. Если же выбирается «Простой, Максимум, для разработчиков» и тп, Joomla пытается задавать директивы error_reporting и display_errors во время исполнения (только пытается).
Однако фатальная ошибка на данный момент показывается даже тогда, когда в настройках отключён вывод ошибок. Почему? Потому что сам по себе этот факт не влияет на отлавливание исключения в функции-обработчике ошибок. Именно её необходимо изменить, чтобы добиться желаемого результата. Здесь 2 варианта:
1. Заново повесить обработчик при помощи set_exception_handler
2. Переопределить defines.php и загрузить переделанный класс с тем же именем раньше (более агрессивный способ)
И третий вариант просто отрубить обработчик в SEF wizard ибо все равно для разработки красивый вывод ошибок не нужен
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Я так понимаю, что писать специальный обработчик для Joomla, означает тщательно его протестировать на все виды ошибок.
https://issues.joomla.org/tracker/joomla-cms/10732#event-173325
Что собственно сейчас не устраивает? Чувствительная информация ведь не отображается, а логгируется.
2017-07-28T07:15:10+00:00 WARNING 46.249.28.173 assets No asset found for com_content.category.root, falling back to com_content
2017-07-28T07:15:10+00:00 CRITICAL 46.249.28.173 error Uncaught Exception of type JException thrown. Stack trace: #0 /var/www/html/***/htdocs/libraries/legacy/error/error.php(277): JError::raise(1, 404, 'xD0x9AxD0xB0xD1x82xD0xB5xD0xB3xD0xBExD1x80xD0...', NULL, true)
#1 /var/www/html/***/htdocs/libraries/legacy/view/category.php(132): JError::raiseError(404, 'xD0x9AxD0xB0xD1x82xD0xB5xD0xB3xD0xBExD1x80xD0...')
#2 /var/www/html/***/htdocs/components/com_content/views/category/view.html.php(72): JViewCategory->commonCategoryDisplay()
#3 /var/www/html/***/htdocs/libraries/legacy/controller/legacy.php(671): ContentViewCategory->display()
#4 /var/www/html/***/htdocs/components/com_content/controller.php(113): JControllerLegacy->display(true, Array)
#5 /var/www/html/***/htdocs/libraries/legacy/controller/legacy.php(709): ContentController->display()
#6 /var/www/html/***/htdocs/components/com_content/content.php(39): JControllerLegacy->execute(NULL)
#7 /var/www/html/***/htdocs/libraries/cms/component/helper.php(389): require_once('/var/www/html/z...')
#8 /var/www/html/***/htdocs/libraries/cms/component/helper.php(364): JComponentHelper::executeComponent('/var/www/html/z...')
#9 /var/www/html/***/htdocs/libraries/cms/application/site.php(191): JComponentHelper::renderComponent('com_content')
#10 /var/www/html/***/htdocs/libraries/cms/application/site.php(230): JApplicationSite->dispatch()
#11 /var/www/html/***/htdocs/libraries/cms/application/cms.php(265): JApplicationSite->doExecute()
#12 /var/www/html/***/htdocs/index.php(49): JApplicationCms->execute()
#13 {main}
Однако фатальная ошибка на данный момент показывается даже тогда, когда в настройках отключён вывод ошибок. Почему? Потому что сам по себе этот факт не влияет на отлавливание исключения в функции-обработчике ошибок. Именно её необходимо изменить, чтобы добиться желаемого результата.
и согласен, и нет. вы правы в том, что опция не влияет на отлов ошибки. но при чем тут показ? имхо fatal нужно поймать, но не показывать саму ошибку, показать просто страничку шаблонную красиво оформленную, говорящую юзеру о том, что ошибка имеет место быть, и все. сам по себе белый экран тоже ж ничего хорошего. поэтому я не против отлова ошибки, с ним имхо лучше чем было без него, я против именно отсутствия реакции на показ ошибок
а отлов это только плюс. например можно админу письмо отправлять об обшибке, и т.п.
И третий вариант просто отрубить обработчик в SEF wizard ибо все равно для разработки красивый вывод ошибок не нужен
и 4-й вариант — сделать в error.php вывод в зависимости от настройки
я еще добавил
<?php if ($this->debug || JFactory::getConfig()->get(‘error_reporting’) === ‘development’) : ?>
чтобы стек видно было не включая debug, и вообще все гут. адинка конечно страдает по прежнему, но там я переживу.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
И третий вариант просто отрубить обработчик в SEF wizard ибо все равно для разработки красивый вывод ошибок не нужен
Для фатальных там нет красивого вывода — parse, syntax, type и др. ошибки передаются стандартному обработчику PHP и исключаются из программной обработки полностью.
Что собственно сейчас не устраивает? Чувствительная информация ведь не отображается, а логгируется.
В связи с тем, что объекты, унаследовавшие интерфейс Throwable попадают в произвольный обработчик ошибок, заданный при помощи set_exception_handler, фатальные ошибки вообще не логируются. Вместо этого они «под одну гребёнку» с исключениями типа 404 передаются в рендерер ошибок Joomla! и показываются как есть любому желающему 
Что собственно сейчас не устраивает?
больше всего то, что с отключенным показом ошибки все равно какая то часть ошибки показывается.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
больше всего то, что с отключенным показом ошибки все равно какая то часть ошибки показывается.
Да, но она ничего не значит без путь/файл. Можете попробовать свой обработчик сделать, если будете PR оформлять, оставьте ссылку.
не значит, но например название таблиц показывает, название классов, и т.п.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
В связи с тем, что объекты, унаследовавшие интерфейс Throwable попадают в произвольный обработчик ошибок, заданный при помощи set_exception_handler, фатальные ошибки вообще не логируются.
ха, точно. ну вот еще одна причина. но тут уже придется выбирать… либо либо по старинке белый экран, но с логами, либо красиво оформленную, но в лог придется писать самому…
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Для фатальных там нет красивого вывода — parse, syntax, type и др. ошибки передаются стандартному обработчику PHP и исключаются из программной обработки полностью.
Ну хз, в общем разбираться мне было лень, я просто вырубил и все =) мб потом разберусь.
Записан
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
- Отображение ошибок, предупреждении, оповещений и уведомлений в Joomla
- Вывод сообщения в Joomla
- Вывод уведомления в Joomla
- Вывод предупреждения в Joomla
- Вывод ошибки в Joomla
- Поддержка Bootstrap в отображениях для пользователей в Joomla
Ошибки, предупреждения, оповещения и уведомления могут быть отображены из любого компонента, модуля, плагина или шаблона с помощью методов, описанных ниже.
// Получение доступа к объекту приложения Joomla
$application = JFactory::getApplication();
// Добавляем сообщение в очередь сообщений
$application->enqueueMessage(JText::_('SOME_ERROR_OCCURRED'), 'error');
/** В качестве альтернативы можно использовать цепочку */
JFactory::getApplication()->enqueueMessage(JText::_('SOME_ERROR_OCCURRED'), 'error');
Вторым аргументом функции enqueueMessage является тип сообщения. По умолчанию это 'message', 'error‘ приводит к другому стилю сообщения. Сообщение будет отображаться вместо специального блока jdoc:include в вашем шаблоне. Поместите следующее в ваш шаблон в том месте, где вы хотите, чтобы появлялись сообщения.
<jdoc:include type="message" />
Вывод сообщения в Joomla.
Message
JFactory::getApplication()->enqueueMessage('Message');
Вывод уведомления в Joomla.
Notice
JError::raiseNotice( 100, 'Notice' );
Вывод предупреждения в Joomla.
Warning
JError::raiseWarning( 100, 'Warning' );
Вывод ошибки в Joomla.
Error
JError::raiseError( 4711, 'A severe error occurred' );
Поддержка Bootstrap в отображениях для пользователей в Joomla.
Поскольку Joomla 3.x использует шаблоны Bootstrap, сообщения будут использовать стандартные стили bootstrap CSS для Alerts.
См.: https://getbootstrap.com/docs/5.1/components/alerts/
Общий синтаксис остается прежним:
JFactory::getApplication()->enqueueMessage('Your Message', 'type');
Где тип может быть одним из
'message'(или не задано) — зеленый'notice'— синий'warning'— желтый'error'— красный
Перевод с английского официальной документации Joomla:
https://docs.joomla.org/Display_error_messages_and_notices
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Выберите, то, чем пользуетесь чаще всего:
Включить режим отладки
Белый лист — страницы Joomla или Удаленный сервер файл не найден при сохранении в джумле — включаем отображение ошибок вручную — режим отладки
Файл: configuration.php
Joomla! 1.0
Переменная: $mosConfig_error_reporting
PHP код:
$mosConfig_error_reporting = ‘-1’;
Возможные значения:
6143 — отображать все ошибки;
7 — отображать простые ошибки;
0 — выключить (не отображать ошибки);
-1 — по умолчанию (использовать настройки системы).
Joomla! 1.5
Переменная: $error_reporting
PHP код:
var $error_reporting = ‘-1’;
Возможные значения:
6143 — отображать все ошибки (по максимуму);
7 — отображать простые ошибки;
0 — выключить (не отображать ошибки);
-1 — по умолчанию (использовать настройки системы).
Joomla! 2.5 и 3.0
Переменная: $error_reporting
PHP код:
public $error_reporting = ‘default’;
Возможные значения:
development — отображать все ошибки, включая уведомления (режим отладки для разработчиков);
maximum — отображать все ошибки (по максимуму);
simple — отображать простые ошибки;
none — выключить (не отображать ошибки);
default — по умолчанию (использовать настройки системы).
Включение консоли отладки (для Joomla 2.5 — 3.0+)
PHP код:
public $debug = ‘1’; // 0 — выключено, 1 — включена
Включение отладки языковых файлов
PHP код:
public $debug_lang = ‘1’; // 0- выключено, 1 — включено
Данные отладки, отображаемые в консоли, можно настроить в системном плагине отладки System — Debug (Система — Отладка).
В Joomla 3.0 появилась возможность журналирования устаревших функций PHP.
В Joomla 3.1 появилась возможность отображения журнала в консоли отладки.
Итак разберем конкретный пример — совсем не давно я столкнулся с таким случаем — сайт работал, более года я с ним ни чего не делал, даже не обновлял даже контент и тут захожу хочу опубликовать новый материал и получаю белый экран браузера. В общем по порядку:
1) Первое что нужно сделать — это включить вывод ошибок — что бы понять что конкретно не нравиться движку сайта Joomla.
В соответствии вышесказанному — в данном случае у нас движок 2,5 — следовательно заходим на ФТП и открываем корневой файл configuration.php для редактирования.
Для простоты просто комментируем старое значение — затем в конце после выявления и исправления ошибки мы просто его вновь раскомментируем удалив вторую строчку:
//public $error_reporting = ‘default’;
public $error_reporting = ‘development’;
2) После чего пробуем сохраниться — тут же выходят наши ошибки:
Strict Standards: Only variables should be passed by reference in /home/www/super-surep-site.ru/libraries/joomla/filter/input.php on line 558
Strict Standards: Only variables should be passed by reference in /home/www/super-surep-site.ru/libraries/joomla/filter/input.php on line 558
Fatal error: Call to undefined function apc_cache_info() in /home/www/super-surep-site.ru/libraries/joomla/cache/storage/apc.php
3) Все понятно. В джумле 2,5 на многих серверах наблюдается дефолтное значение параметра кэширования равного «apc»:
public $cache_handler = ‘apc’;
При этом в админке этого не видно там высвечивается значение — или кэширование отключено или стоит значение — файлы «file».
Но при этом почти на половине серверов джумла 2,5 с «public $cache_handler = ‘apc’;» не работает.
Меняем на всегда рабочее и наиболее универсальное- распространение значение:
public $cache_handler = ‘file’;
Все сайт работает.
В целом на счет невозможности сохраниться чаще всего необходимо:
1) Проверяем .htaccess на предмет включения, каких либо дополнительных директив — проще всего взять из исходного дистрибутива и сравнивать построчно.
2) проверить файл шаблона сайта на предмет включения в него посторонних кодов.
3) Если ни чего не помогло просто сеть и подумать, а что я делал с сайтом в последние этапы перед появлением данной ошибки? смена хостинга? установка модуля? На самом деле в 70% случаях решение возникшей проблемы лежит в откате своих последних действий.
4) просто скопировать и вставить появившиеся ошибки в гугл или яндекс. Так как джумла сверх распространенный движок мне еще не встречались ошибки которые еще не рассматривались до меня на просторах интернет форумов — да иногда приходиться использовать англоязычные форумы — но гугл переводчик уже в настоящий момент переводит достаточно понятно — по крайне мере смысл всегда можно понять даже без знаний английского.
(Слабо распространенные модули в счет не берем – там можно нарваться на все что угодно – но тут совет прост, пользуйтесь наиболее распространенными проверенными и хорошо поддерживаемыми модулями Joomla – ведь на самом деле требования и желания у большинства одни и те же.)
Ps/ Как и с любой болезнью — главное в ее лечении — это правильно и вовремя ее диагностировать!!!
Если вы не сохраняете материала пытаетесь установить новый модуль то это несколько другое и здесь в первую очередь необходимо проверить права записи на папки и файлы приведенные
слева — должны иметь значения 755
(на картинке справа — принскрин закрытая для установок структура сайта — при этом в данном варианте — гораздо сложнее взломать сайт — т.е. с одной стороны не удобно каждый раз при установки чего либо необходимо менять права — с другой стороны — забыл поменять на минимальные — как правило получишь взлом движка):
administrator/backups/
administrator/cache/
administrator/components/
administrator/modules/
administrator/templates/
cache/
components/
images/
images/banners/
images/stories/
language/
language/en-GB/
language/ru-RU/
media/
modules/
plugins/
plugins/content/
plugins/search/
plugins/system/
templates/
Не забываем после установки новых модулей вернуть права на папки и файлы на минимально рабочие для предотвращения облегчения взлома сайта.
Включаем/выключаем отображение ошибок PHP
Иногда нужно отобразить ошибки в скриптах, а хостер блокирует вывод ошибок, что не дает четкой картины раоты скрипта во время отладки… Делаем себе удобно.
В php.ini:
|
1 2 3 |
error_reporting = E_ALL (ну и какие там еще не нужны ошибки указываем) display_errors On<span style=»font-family: ‘Courier New’;»><strong> </strong></span> |
Необходим перезапуск Apache:
sudo apachectl -k graceful
ИЛИ
В .htaccess:
|
1 2 3 |
php_flag display_errors On #показываем все ошибки кроме предупреждений (Notice) php_value error_reporting «E_ALL & ~E_NOTICE» |
ИЛИ
В скрипте PHP:
|
1 2 |
ini_set(‘display_errors’,’On’); error_reporting(‘E_ALL’); |
после кода, который проверяем на ошибки — позвращаем все обратно
|
5 |
ini_set(‘display_errors’,’Off’); |
Смысл такой: сначала обрабатывается значение в php.ini, затем в .htaccess, затем в скрипте PHP. То есть если на сервере вывод ошибок выключен, в .htaccess тоже, то мы можем вывести ошибки в скрипте, чтобы посмотреть насколько все плохо в конкретном месте кода .
- Подробности
- Просмотров: 4984
Белый лист — страницы Joomla или Удаленный сервер файл не найден при сохранении в джумле — включаем отображение ошибок вручную — режим отладки
В очередной раз столкнувшись с «белым листом джумлы» или «Удаленный сервер или файл не найден» при попытки что либо сохранить в джумле
Как вручную включить режим отладки в Joomla всех версий: 1.0, 1.5, 1.6-2.5, 3.0-3.1
Файл: configuration.php
Joomla! 1.0
Переменная: $mosConfig_error_reporting
$mosConfig_error_reporting = '-1';
Возможные значения:
- 6143 — отображать все ошибки;
- 7 — отображать простые ошибки;
- 0 — выключить (не отображать ошибки);
- -1 — по умолчанию (использовать настройки системы).
Joomla! 1.5
Переменная: $error_reporting
var $error_reporting = ‘-1’;
Возможные значения:
- 6143 — отображать все ошибки (по максимуму);
- 7 — отображать простые ошибки;
- 0 — выключить (не отображать ошибки);
- -1 — по умолчанию (использовать настройки системы).
Joomla! 2.5 и 3.0
Переменная: $error_reporting
public $error_reporting = 'default';
Возможные значения:
- development — отображать все ошибки, включая уведомления (режим отладки для разработчиков);
- maximum — отображать все ошибки (по максимуму);
- simple — отображать простые ошибки;
- none — выключить (не отображать ошибки);
- default — по умолчанию (использовать настройки системы).
Включение консоли отладки (для Joomla 2.5 — 3.0+)
public $debug = '1'; // 0 - выключено, 1 - включена
Включение отладки языковых файлов
public $debug_lang = '1'; // 0- выключено, 1 - включено
Данные отладки, отображаемые в консоли, можно настроить в системном плагине отладки System — Debug (Система — Отладка).
В Joomla 3.0 появилась возможность журналирования устаревших функций PHP.
В Joomla 3.1 появилась возможность отображения журнала в консоли отладки.
Итак разберем конкретный пример — совсем не давно я столкнулся с таким случаем — сайт работал, более года я с ним ни чего не делал, даже не обновлял даже контент и тут захожу хочу опубликовать новый материал и получаю белый экран браузера. В общем по порядку:
1) Первое что нужно сделать — это включить вывод ошибок — что бы понять что конкретно не нравиться движку сайта Joomla.
В соответствии вышесказанному — в данном случае у нас движок 2,5 — следовательно заходим на ФТП и открываем корневой файл configuration.php для редактирования.
Для простоты просто комментируем старое значение — затем в конце после выявления и исправления ошибки мы просто его вновь раскомментируем удалив вторую строчку:
//public $error_reporting = ‘default’;
public $error_reporting = ‘development’;
2) После чего пробуем сохраниться — тут же выходят наши ошибки:
Strict Standards: Only variables should be passed by reference in /home/www/super-surep-site.ru/libraries/joomla/filter/input.php on line 558
Strict Standards: Only variables should be passed by reference in /home/www/super-surep-site.ru/libraries/joomla/filter/input.php on line 558
Fatal error: Call to undefined function apc_cache_info() in /home/www/super-surep-site.ru/libraries/joomla/cache/storage/apc.php
3) Все понятно. В джумле 2,5 на многих серверах наблюдается дефолтное значение параметра кэширования равного «apc»:
public $cache_handler = ‘apc’;
При этом в админке этого не видно там высвечивается значение — или кэширование отключено или стоит значение — файлы «file».
Но при этом почти на половине серверов джумла 2,5 с «public $cache_handler = ‘apc’;» не работает.
Меняем на всегда рабочее и наиболее универсальное- распространение значение:
public $cache_handler = ‘file’;
Все сайт работает.
В целом на счет невозможности сохраниться чаще всего необходимо:
1) Проверяем .htaccess на предмет включения, каких либо дополнительных директив — проще всего взять из исходного дистрибутива и сравнивать построчно.
2) проверить файл шаблона сайта на предмет включения в него посторонних кодов.
3) Если ни чего не помогло просто сеть и подумать, а что я делал с сайтом в последние этапы перед появлением данной ошибки? смена хостинга? установка модуля? На самом деле в 70% случаях решение возникшей проблемы лежит в откате своих последних действий.
4) просто скопировать и вставить появившиеся ошибки в гугл или яндекс. Так как джумла сверх распространенный движок мне еще не встречались ошибки которые еще не рассматривались до меня на просторах интернет форумов — да иногда приходиться использовать англоязычные форумы — но гугл переводчик уже в настоящий момент переводит достаточно понятно — по кране мере смысл всегда можно понять даже без знаний английского.
(Слабо распространенные модули в счет не берем – там можно нарваться на все что угодно – но тут совет прост пользуйтесь наиболее распространенными проверенными и хорошо поддерживаемыми модулями Joomla – ведь на самом деле требования и желания у большинства одни и те же.)
Ps/ Как и с любой болезнью — главное в ее лечении — это правильно и вовремя ее диагностировать!!!
Если вы не сохраняете материала пытаетесь установить новый модуль то это несколько другое и здесь в первую очередь необходимо проверить права записи на папки и файлы приведенные слева — должны иметь значения 755
(на картинке справа — принскрин закрытая для установок структура сайта — при этом в данном варианте — гораздо сложнее взломать сайт — т.е. с одной стороны не удобно каждый раз при установки чего либо необходимо менять права — с другой стороны — забыл поменять на минимальные — как правило получишь взлом движка):
administrator/backups/
administrator/cache/
administrator/components/
administrator/modules/
administrator/templates/
cache/
components/
images/
images/banners/
images/stories/
language/
language/en-GB/
language/ru-RU/
media/
modules/
plugins/
plugins/content/
plugins/search/
plugins/system/
templates/
Не забываем после установки новых модулей вернуть права на папки и файлы на минимально рабочие для предотвращения облегчения взлома сайта.
Добавить комментарий
Как вручную включить режим отладки в Joomla всех версий: 1.0, 1.5, 1.6-2.5, 3.0-3.1
Файл: configuration.php
Joomla! 1.0
Переменная: $mosConfig_error_reporting
$mosConfig_error_reporting = ‘-1’;
Возможные значения:
6143 — отображать все ошибки;
7 — отображать простые ошибки;
0 — выключить (не отображать ошибки);
-1 — по умолчанию (использовать настройки системы).
Joomla! 1.5
Переменная: $error_reporting
var $error_reporting = ‘-1’;
Возможные значения:
6143 — отображать все ошибки (по максимуму);
7 — отображать простые ошибки;
0 — выключить (не отображать ошибки);
-1 — по умолчанию (использовать настройки системы).
Joomla! 2.5 и 3.0
Переменная: $error_reporting
public $error_reporting = ‘default’;
Возможные значения:
development — отображать все ошибки, включая уведомления (режим отладки для разработчиков);
maximum — отображать все ошибки (по максимуму);
simple — отображать простые ошибки;
none — выключить (не отображать ошибки);
default — по умолчанию (использовать настройки системы).
Включение консоли отладки (для Joomla 2.5 — 3.0+)
public $debug = ‘1’; // 0 — выключено, 1 — включена
Включение отладки языковых файлов
public $debug_lang = ‘1’; // 0- выключено, 1 — включено
Данные отладки, отображаемые в консоли, можно настроить в системном плагине отладки System — Debug (Система — Отладка).
В Joomla 3.0 появилась возможность журналирования устаревших функций PHP.
В Joomla 3.1 появилась возможность отображения журнала в консоли отладки.