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