помогите, пожалуйста, разобраться с сообщением об ошибке

помогите, пожалуйста, разобраться с сообщением об ошибке

от Anastasia Andros -
Количество ответов: 7

помогите, пожалуйста, разобраться с сообщением об ошибке -

судя по всему что-то случилось (сработало) 1 августа или днём раньше,

суть в следующем:

когда захожу к себе на сайт, то сразу в шапке вижу сообщение

Notice: Only variable references should be returned by reference in /data01/virt3042/domeenid/www.englishlab.net/htdocs/moodle/lib/adodb/adodb.inc.php on line 2548

Проблема в том, что нельзя зайти на сайт (я admin), хотя пароль сменить можно, и в процессе смены пароля, выскакивает предупреждение, что невозможно изменить данные в заголовке ввиду того, что output уже инициирован:

Warning: cannot modify header information - headers already sent by (output started at data01/virt3042/domeenid/www.englishlab.net/htdocs/moodle/lib/adodb/adodb.inc.php:2548 in /data01/virt3042/domeenid/www.englishlab.net/htdocs/moodle/lib/moodlelib.php on line 950)

Warning: cannot modify header information - headers already sent by (output started at data01/virt3042/domeenid/www.englishlab.net/htdocs/moodle/lib/adodb/adodb.inc.php:2548 in /data01/virt3042/domeenid/www.englishlab.net/htdocs/moodle/lib/moodlelib.php on line 951)

В PHP я не сильна, но есть кому помочь, если намекнёте, что именно нужно сделать. Буду очень благодарна.

В ответ на Anastasia Andros

Re: помогите, пожалуйста, разобраться с сообщением об ошибке

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle
Проблема в том, что кто-то включил вывод Notice в настройках php. Если Вы пользуетесь виртуальным хостингом и первого августа администратор обновил программное обеспечение сервера (например, php5 выводит Notice когда конструкция не совсем соответствует синтаксису пятой версии).
Дело в том, что скрипт должен передать заголовки до того, как будет передан хоть какой-то текст (в данном случае сначала выводится предупреждение Notice).
Пропишите в php.ini
error_reporting = E_ALL & ~E_NOTICE
display_errors = off
log_errors = On

После этого Notice выводится не будут, а остальные сообщения об ошибках будут выводится в файл.
В ответ на Alex Djachenko

Re: помогите, пожалуйста, разобраться с сообщением об ошибке

от Anastasia Andros -

Прав на изменение php.ini файла у меня нет, как оказалосьгрущу

Однако, проблему удалось решить, поставив в начало проблемных файлов строку

error_reporting (E_ALL ^ E_NOTICE);

Вопрос 1:

Нужно ли туда же дописать

display_errors = off
log_errors = On

или ещё чего-нибудь?

Вопрос 2:

Имеет ли смысл - в данном случае - всё, что нужно, заархивировать, а систему снести и переустановить заново? Или можно надеяться на некоторую стабильность?

В ответ на Anastasia Andros

Re: помогите, пожалуйста, разобраться с сообщением об ошибке

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle

Однако, проблему удалось решить, поставив в начало проблемных файлов строку
error_reporting (E_ALL ^ E_NOTICE);

Да, настройками PHP можно управлять из нескольких разных мест:

  • Конфиг самого php - php.ini
  • Конфиг веб-сервер - httpd.conf
  • Настройки папки веб-сервера - .htaccess
  • С помощью специальных php-инструкций - ini_set() и др.

Вопрос 1:
Нужно ли туда же дописать
display_errors = off
log_errors = On

Как сами считаете нужным: первая строчка отключает отображение вообще всех ошибок (что несколько повысит защищенность системы, хоть и не на много), а вторая - указывает php, что все сообщения об ошибках нужно записывать в файл (чтобы потом администратор системы мог их просмотреть). И то и другое - не обязательно.

или ещё чего-нибудь?

Вопрос 2:
Имеет ли смысл - в данном случае - всё, что нужно, заархивировать, а систему снести и переустановить заново? Или можно надеяться на некоторую стабильность?

Зачем?????????????????? Сюрприз
Это же не Windows подмигиваю, переустановка moodle редко когда и от чего может помочь, разьве что если кто-то случайно "похозяйничает" в его файлах, но тогда достаточно просто все стереть, кроме config.php, а на место старых файлов распаковать новый дистрибутив этой или более новой версии (если версия более новая, то при первом входе администратора, система сделает обновление базы данных до новой версии).

В ответ на Alex Djachenko

Re: помогите, пожалуйста, разобраться с сообщением об ошибке

от Vadim Bazilevich -
Полностью с Вами согласен Alex Djachenko есть только одно но и об этом надо предупредить начинающего пользователя Moodle.
Anastasia Andros судя по тому,что Вы пытались что-то править в php.ini Вы очень любопытная и настойчивая девушка. Значит наверняка, что-то попытаетесь улучшить в системе Moodle. Так вот после этого шага у Вас два пути:
1. Плюнуть на обновления и вести систему дальше как есть (особенно актуально если предполагается эксплуатировать систему по-взрослому т.е. с зарабатывая с ее помощью деньги)
2. Продолжать править в системе все и вся при этом усердно молиться при каждом апгрейте.
И наконец третий путь (если Вы любительница экстрима) сочетает в себе вышеуказанные два (правка системы вручную, апгрейт с молтитвой и зарабатывание денег между апгрейтами и переустановкой системы).
Последний путь я Вам доложу не для слабонервных.
В ответ на Alex Djachenko

Re: помогите, пожалуйста, разобраться с сообщением об ошибке

от Dmitry Pupinin -
Лучшим выходом считаю:
Настройки папки веб-сервера - файл .htaccess

Это как-раз тот способ, который рекомендуется для любых вэб-систем при отсутствии возможности конфигурирования сервера! И разработчиками Moodle, кстати, тоже (http://moodle.org/doc/?file=install.html#installer)! подмигиваю

Исправлять что-либо в файлах самой системы - не самое правильное решение, особенно, учитывая перспективу будущих апдейтов...

2Алекс: Хорошо было бы конкретные рекомендации для файла .htaccess выложить в FAQ... подмигиваю