Включить режим отладки

 

Белый лист - страницы 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 тоже, то мы можем вывести ошибки в скрипте, чтобы посмотреть насколько все плохо в конкретном месте кода .