Общее
См.также
«Плагин не может запуститься и был деактивирован» или «Этот плагин недействителен»
Эта ошибка обычно сопровождается дополнительными сведениями, объясняющими, почему плагин недействителен. Обычно это вызвано неправильно установленным плагином.
Если вы устанавливаете плагин с именем «test», в каталоге mod будет создана директория test. В этой директории должен находиться файл composer.json по пути /mod/test/composer.json.
- Если этот файл отсутствует, это может быть вызвано:
установкой плагина в неверную директорию
созданием директории под /mod, которая не содержит плагин
ошибкой при передаче через ftp
распаковкой плагина в лишнюю директорию (myplugin.zip распаковывается в
myplugin/myplugin)несовместимым плагином
Если вы используете хост на базе Unix и файлы существуют в правильной директории, проверьте права доступа. Elgg должен иметь права на чтение файлов и права на чтение + выполнение для директорий.
Белая страница (WSOD)
- Пустая белая страница (часто называемая «белым экраном смерти») означает наличие синтаксической ошибки PHP. Возможные причины этого:
повреждённый файл — попробуйте снова передать код на ваш сервер
вызов модуля php, который не был загружен — это может произойти после установки плагина, требующего определённый модуль.
некачественный плагин — не все плагины написаны одинаково качественно, поэтому следует внимательно относиться к тому, какие из них вы устанавливаете.
Чтобы найти, где происходит ошибка, измените файл .htaccess для отображения ошибок в браузере. Установите display_errors в 1 и снова загрузите ту же страницу. Вы должны увидеть ошибку PHP в вашем браузере. Верните настройку обратно после решения проблемы.
Примечание
Если вы используете плагин Developer’s Tools, перейдите на страницу его настроек и убедитесь, что опция «Display fatal PHP errors» включена.
Если белый экран вызван некачественным плагином, удалите последние установленные плагины, удалив их директории, а затем перезагрузите страницу.
Примечание
Вы можете временно отключить все плагины, создав пустой файл по пути mod/disabled. Затем вы можете отключить проблемный модуль через панель инструментов администратора.
Если вы получаете WSOD при выполнении действия, например, при входе в систему или публикации блога, но сообщений об ошибках нет, это, скорее всего, вызвано непечатаемыми символами в коде плагина. Проверьте плагин на наличие пробелов/символов новой строки после закрывающего тега php (?>) и удалите их.
Страница не найдена
Если вы недавно установили ваш сайт Elgg, наиболее вероятной причиной ошибки «страница не найдена» является то, что mod_rewrite настроен неправильно на вашем сервере. Информация об исправлении этого есть на странице Install Troubleshooting. Вторая наиболее вероятная причина — неверный url вашего сайта в базе данных.
Если ваш сайт работал какое-то время и вдруг начали появляться ошибки «страница не найдена», вам нужно спросить себя, что изменилось. Добавляли ли вы какие-либо плагины? Меняли ли вы конфигурацию сервера?
Для отладки ошибки «страница не найдена»:
Убедитесь, что ссылка, ведущая к отсутствующей странице, верна. Если нет, как генерируется эта ссылка?
Убедитесь, что правила перезаписи
.htaccessприменяются.
Несоответствие токена входа
Если вам приходится входить на сайт дважды, и сообщение об ошибке после первой попытки говорит о несоответствии токена, URL в настройках Elgg не совпадает с URL, используемым для доступа к нему. Наиболее частая причина этого — добавление или удаление «www» при доступе к сайту. Например, www.elgg.org против elgg.org. Это вызывает проблему с обработкой сессий из-за того, как веб-браузеры сохраняют куки.
Чтобы исправить это, вы можете добавить правила перезаписи. Для перенаправления с www.elgg.org на elgg.org в Apache правила могут выглядеть так:
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^elgg\.org
RewriteRule (.*) http://elgg.org/$1 [R=301,L]
Перенаправление с non-www на www может выглядеть так:
RewriteCond %{HTTP_HOST} ^elgg\.org
RewriteRule ^(.*)$ http://www.elgg.org/$1 [R=301,L]
Если вы не знаете, как настроить правила перезаписи, обратитесь к вашему хостинг-провайдеру за дополнительной информацией.
В форме отсутствуют поля __token или __ts
Все действия Elgg требуют токен безопасности, и эта ошибка возникает, когда этот токен отсутствует. Это либо проблема с конфигурацией вашего сервера, либо со сторонним плагином.
Если вы сталкиваетесь с этим на новой установке, убедитесь, что ваш сервер правильно настроен и ваши правила перезаписи верны. Если вы сталкиваетесь с этим при обновлении, убедитесь, что вы обновили правила перезаписи либо в .htaccess (Apache), либо в конфигурации сервера.
Если вы сталкиваетесь с этим, отключите все сторонние плагины и попробуйте снова. Очень старые плагины для Elgg не используют токены безопасности. Если проблема исчезает при отключении плагинов, это связано с плагином, который должен быть обновлён его автором.
Режим обслуживания
Чтобы временно отключить ваш сайт, перейдите в Administration -> Utilities -> Maintenance Mode. Заполните форму и нажмите Сохранить, чтобы отключить ваш сайт для всех, кроме пользователей с правами администратора.
Отсутствующее письмо
Если ваши пользователи сообщают, что письма с подтверждением не приходят, попросите их проверить папку со спамом. Возможно, письма, отправляемые с вашего сервера, помечаются как спам. Это зависит от многих факторов, таких как наличие проблем со спамерами у вашего хостинг-провайдера, как настроена ваша почтовая конфигурация PHP, какой агент передачи почты использует ваш сервер, или ограничение хостом количества писем, которые вы можете отправить за час.
Если никто вообще не получает письма, весьма вероятно, что ваш сервер не настроен правильно для отправки почты. Ваш сервер нуждается в программе для отправки писем (называемой Mail Transfer Agent — MTA), и PHP должен быть настроен для использования MTA.
Чтобы быстро проверить, правильно ли настроены PHP и MTA, создайте файл на вашем сервере со следующим содержимым:
<?php
$address = "your_email@your_host.com";
$subject = 'Test email.';
$body = 'If you can read this, your email is working.';
echo "Attempting to email $address...<br />";
if (mail($address, $subject, $body)) {
echo 'SUCCESS! PHP successfully delivered email to your MTA. If you don\'t see the email in your inbox in a few minutes, there is a problem with your MTA.';
} else {
echo 'ERROR! PHP could not deliver email to your MTA. Check that your PHP settings are correct for your MTA and your MTA will deliver email.';
}
Обязательно замените «your_email@your_host.com» на ваш реальный адрес электронной почты. Не забудьте оставить кавычки вокруг него! Когда вы откроете эту страницу через веб-браузер, она попытается отправить тестовое письмо. Этот тест покажет, правильно ли настроены PHP и ваш MTA. Если он не удастся — либо вы получите ошибку, либо вы никогда не получите письмо — вам потребуется провести дополнительное расследование и, возможно, связаться с вашим провайдером услуг.
Полная настройка MTA и почтовой функциональности PHP выходит за рамки этого FAQ, и вам следует поискать в интернете дополнительные ресурсы по этой теме. Некоторую базовую информацию о параметрах php можно найти на сайте PHP
Логи сервера
Скорее всего, вы используете Apache в качестве вашего веб-сервера. Предупреждения и ошибки записываются веб-сервером в лог и могут быть полезны для отладки проблем. Обычно вы увидите два типа файлов логов: логи доступа и логи ошибок. Информация от PHP и Elgg записывается в лог ошибок сервера.
Linux — лог ошибок, вероятно, находится в /var/log/httpd или /var/log/apache2.
Windows — вероятно, находится внутри вашей директории Apache.
Mac OS — лог ошибок, вероятно, находится в /var/log/apache2/error_log
Если вы используете общий хостинг без доступа по ssh, ваш хостинг-провайдер может предоставлять механизм для получения доступа к логам вашего сервера. Вам нужно спросить их об этом.
Как работает регистрация?
При настройке по умолчанию регистрация работает следующим образом:
Пользователь заполняет форму регистрации и отправляет её
Учётная запись пользователя создаётся и отключается до подтверждения
Пользователю отправляется письмо со ссылкой для подтверждения учётной записи
Когда пользователь нажимает на ссылку, учётная запись подтверждается
Теперь пользователь может войти в систему
Сбои в этом процессе включают ввод пользователем неверного адреса электронной почты, пометку письма с подтверждением как спам, или то, что пользователь никогда не подтверждает учётную запись.
Подтверждение пользователя
По умолчанию все пользователи, регистрирующиеся самостоятельно, должны подтвердить свои учётные записи через электронную почту. Если у пользователя возникают проблемы с подтверждением учётной записи, вы можете подтвердить пользователей вручную, перейдя в Administration -> Users -> Unvalidated.
Вы можете убрать это требование, деактивировав плагин User Validation by Email.
Примечание
Удаление подтверждения имеет некоторые последствия: нет способа узнать, что пользователь зарегистрировался с рабочим адресом электронной почты, и это может оставить вашу систему открытой для спамеров.
Добавить пользователя вручную
Чтобы добавить пользователя вручную, в разделе управления перейдите в Users. Там вы увидите ссылку с названием «Add new User». После заполнения информации и отправки формы новый пользователь получит письмо с именем пользователя и паролем, а также напоминание сменить пароль.
Примечание
Elgg не принуждает пользователя сменить пароль.
Я создаю или только что установил новую тему, но графика или другие элементы не работают
Убедитесь, что тема находится в конце списка плагинов.
Очистите кэш браузера и перезагрузите страницу. Чтобы снизить нагрузку на сервер, Elgg инструктирует браузер редко загружать файл CSS. Новая тема полностью изменит файл CSS, и обновление должно заставить браузер снова запросить файл CSS.
Если вы создаёте или изменяете тему, убедитесь, что вы отключили simple и system кэши. Это можно сделать, включив плагин Developer Tools, затем перейдя в Administration -> Develop -> Settings. Как только вы будете довольны изменениями, включите кэши, иначе производительность пострадает.
Изменение полей профиля
В настройках администрирования Elgg есть страница для замены полей профиля по умолчанию. По умолчанию Elgg предоставляет администратору два варианта:
Использовать поля профиля по умолчанию
Заменить набор по умолчанию на набор пользовательских полей профиля
Вы не можете добавить новые поля профиля к полям по умолчанию. Добавление нового поля профиля через опцию замены полей профиля очищает поля по умолчанию. Перед тем как допустить пользователей, лучше всего определить, какие поля профиля вы хотите, какими должны быть типы полей и в каком порядке они должны отображаться. Вы не можете изменить тип поля или порядок или удалить поля после их создания без полного очищения профиля.
Большую гибкость можно получить через плагины. На сайте сообщества есть как минимум два плагина, которые позволяют получить больший контроль над полями профиля. Плагин Profile Manager стал довольно популярным в сообществе Elgg. Он позволяет добавлять новые поля профиля в любое время, изменять порядок, группировать поля профиля и добавлять их в регистрацию.
Изменение регистрации
Процесс регистрации можно изменить через плагин. Всё, что касается регистрации, можно изменить: внешний вид, различные поля регистрации, дополнительную валидацию полей, дополнительные шаги и так далее. Такие изменения требуют базовых знаний HTML, CSS, PHP.
Другой вариант — использовать плагин Profile Manager, который позволяет добавлять поля как в профили пользователей, так и в форму регистрации.
- Создать скелет плагина
- Изменение отображения регистрации
Переопределить view
account/forms/register- Изменение обработчика действия регистрации
Вы можете написать своё собственное действие для создания учётной записи пользователя
Как изменить настройки PHP с помощью .htaccess?
Возможно, вы захотите изменить настройки php в вашем файле .htaccess. Это особенно актуально, если ваш хостинг-провайдер не предоставляет вам доступ к файлу php.ini сервера. Переменные могут быть связаны с ограничениями размера загружаемых файлов, безопасностью, длительностью сессии или любым другим количеством атрибутов php. Примеры того, как это сделать, см. в документации PHP по этому вопросу.
HTTPS вход случайно включён
Если вы включили вход через HTTPS, но не настроили SSL, вы теперь заблокированы от вашей установки Elgg. Чтобы отключить этот параметр конфигурации, вам нужно отредактировать вашу базу данных. Используйте такой инструмент, как phpMyAdmin, для просмотра вашей базы данных. Выберите таблицу config и удалите строку с именем https_login.
Использование тестового сайта
Рекомендуется всегда пробовать новые релизы или новые плагины на тестовом сайте перед запуском их на продакшн-сайте (сайте с реальными пользователями). Самый простой способ сделать это — поддерживать отдельную установку Elgg с тестовыми учётными записями. При тестировании изменений важно использовать тестовые учётные записи, не являющиеся администраторами, чтобы протестировать то, что увидят ваши пользователи.
Более реалистичный тест — зеркалировать контент с вашего продакшн-сайта на тестовый сайт. Следуя инструкциям для duplicating a site. Затем убедитесь, что вы предотвращаете отправку писем вашим пользователям. Вы можете написать небольшой плагин, который перенаправляет все письма на вашу собственную учётную запись (учтите плагины, которые включают собственный код отправки почты, поэтому вам придётся модифицировать эти плагины). После этого вы можете просмотреть весь контент, чтобы убедиться, что обновление или новый плагин функционирует как задумано и ничего не ломает. Если этот процесс кажется сложным, пожалуйста, придерживайтесь запуска простого тестового сайта.
500 — Внутренняя ошибка сервера
Что это?
500 — Internal Server Error означает, что веб-сервер столкнулся с проблемой при обслуживании запроса.
Возможные причины
- Конфигурация веб-сервера
Наиболее частая причина этого — неправильно настроенный сервер. Если вы отредактировали файл
.htaccessи добавили что-то неверное, Apache отправит ошибку 500.- Права доступа к файлам
Это также может быть проблемой прав доступа к файлу. Apache должен иметь возможность читать файлы Elgg. Использование прав 755 для директорий и 644 для файлов позволит Apache читать файлы.
Когда я загружаю фото или меняю аватар профиля, я получаю белый экран
Скорее всего, у вас не установлена или неправильно настроена библиотека PHP GD. Вам может потребоваться помощь администратора вашего сервера.
Отсутствует CSS
Неверный URL
Иногда люди устанавливают Elgg так, что базовый URL — это localhost, а затем пытаются просмотреть сайт, используя имя хоста. В этом случае браузер не сможет загрузить файл CSS. Попробуйте просмотреть исходный код веб-страницы и скопировать ссылку на файл CSS. Вставьте её в ваш браузер. Если вы получите ошибку 404, вероятно, это и есть ваша проблема. Вам нужно будет изменить базовый URL вашего сайта.
Синтаксическая ошибка
Elgg хранит свой CSS как код PHP для обеспечения гибкости и мощности. Если есть синтаксическая ошибка, файл CSS, отправляемый в браузер, может быть пустым. Отключение несвязанных плагинов — рекомендуемый первый шаг.
Ошибки правил перезаписи
Неправильный файл .htaccess также может привести к ошибке 404 при запросе файла CSS. Это может произойти при обновлении и забывании также обновить .htaccess.
Следует ли мне редактировать базу данных вручную?
Предупреждение
Нет, вам никогда не следует редактировать базу данных вручную!
Сломает ли ручное редактирование базы данных мой сайт?
Да.
Могу ли я добавить дополнительные поля в таблицы базы данных?
(Или: я не понимаю модель данных Elgg, поэтому собираюсь добавить столбцы. Вы поможете?)
Нет, это плохая идея. Изучите модель данных, и вы увидите, что если это не очень специфическая и высоко кастомизированная установка, вы можете сделать всё, что вам нужно, в рамках текущей модели данных Elgg.
Я хочу удалить пользователей. Не могу ли я просто удалить их из таблицы elgg_entities?
Нет, это повредит вашу базу данных. Удаляйте их через сайт.
Я хочу удалить спам. Не могу ли я просто найти и удалить его из таблицы elgg_entities?
Нет, это повредит вашу базу данных. Удаляйте его через сайт.
Кто-то на сайте сообщества сказал мне отредактировать базу данных вручную. Стоит ли?
Кто это был? Это кто-то опытный с Elgg, например, один из основных разработчиков или известный автор плагинов? Дал ли он или она вам чёткие и конкретные инструкции, что редактировать? Если вы не знаете, кто это, или если вы не можете понять или не чувствуете себя комфортно, следуя инструкциям, не редактируйте базу данных вручную.
Я знаю PHP и MySQL и у меня есть законная причина редактировать базу данных. Можно ли редактировать базу данных вручную?
Убедитесь, что вы сначала понимаете модель данных и схему Elgg. Сделайте резервную копию, редактируйте осторожно, затем тщательно протестируйте.
Проблема входа в Internet Explorer (IE)
Канонический URL
IE не любит работать с сайтами, которые используют как http://example.org, так и http://www.example.org. Он сохраняет несколько куки, и это вызывает проблемы. Лучше использовать только один базовый URL. Подробную информацию о том, как это сделать, см. в ошибке Login token mismatch.
Chrome Frame
Использование chrome frame внутри IE может нарушить процесс входа.
Письма не поддерживают нелатинские символы
Для поддержки нелатинских символов (таких как кириллица или китайские) Elgg требует, чтобы поддержка многбайтовых строк была скомпилирована в PHP.
Во многих установках (например, Debian и Ubuntu) это включено по умолчанию. Если это не так, вам нужно включить это (или перекомпилировать PHP, чтобы включить это). Чтобы проверить, поддерживает ли ваш сервер многбайтовые строки, проверьте phpinfo.
Длительность сессии
Длительность сессии контролируется вашей конфигурацией php. Сначала вам нужно найти ваш файл php.ini. В этом файле будут несколько переменных сессии. Полный список и то, что они делают, можно найти в руководстве php.
У файла отсутствует владелец
Есть три причины этой ошибки. У вас может быть сущность в базе данных, у которой owner_guid равен 0. Это должно быть крайне редко и может произойти только если ваша база данных/сервер аварийно завершает работу во время операции записи.
Вторая причина — сущность, владелец которой больше не существует. Это может произойти, если плагин, участвовавший в создании сущности, отключён, а затем владелец удалён, но операция удаления не удалась (потому что плагин отключён). Если вы можете определить, какая сущность вызывает это, посмотрите в вашей таблице entities и измените owner_guid на свой собственный, а затем вы сможете удалить сущность через Elgg.
Предупреждение
Прочтите раздел «Следует ли мне редактировать базу данных вручную?». Будьте очень осторожны при прямом редактировании базы данных. Это может сломать ваш сайт. Всегда делайте резервную копию перед этим.
Исправления
Плагин Database Validator проверит вашу базу данных на наличие этих причин и предоставит опцию для их исправления. Обязательно сделайте резервную копию базы данных перед тем, как попробовать опцию исправления.
Нет изображений
Если изображения профиля, изображения групп или другие файлы перестали работать на вашем сайте, это, вероятно, связано с неправильной конфигурацией, особенно если вы перешли на новый сервер.
Это наиболее распространённые ошибки конфигурации, которые приводят к тому, что изображения и другие файлы перестают работать.
Неверный путь к директории данных
Убедитесь, что путь к директории данных верен в области администрирования сайта. Он должен иметь завершающий слэш.
Неверные права доступа к директории данных
Проверьте права доступа к директории данных. Директория данных должна быть доступна для чтения и записи пользователю веб-сервера.
Мигрированная установка с новым расположением директории данных
Если вы мигрировали установку и вам нужно изменить путь к директории данных, обязательно обновите SQL для расположения filestore, как описано в инструкциях Дублирование установки.
Предупреждения об устаревании
Если вы видите много предупреждений об устаревании, которые говорят что-то вроде
Deprecated in 1.7: extend_view() was deprecated by elgg_extend_view()!
значит, вы используете плагин, написанный для более старой версии Elgg. Это означает, что плагин использует функции, которые запланированы к удалению в будущей версии Elgg. Вы можете спросить разработчика плагина, будет ли он обновлён, или вы можете обновить плагин самостоятельно. Если ни одно из этих событий маловероятно, не следует использовать этот плагин.
JavaScript не работает
Если перестало работать всплывающее меню пользователя или вы не можете закрыть системные сообщения, это означает, что на вашем сайте не работает JavaScript. Обычно это происходит из-за плагина с ошибочным кодом JavaScript. Вам следует найти плагин, вызывающий проблему, и отключить его. Это можно сделать, отключая сторонние плагины по одному, пока проблема не исчезнет. Другой подход — отключить все сторонние плагины, а затем включать их по одному, пока проблема не появится снова.
Большинство веб-браузеров подскажут, что именно ломает код JavaScript. В них часто есть консоль для ошибок JavaScript или расширенный режим отображения ошибок. Как только вы увидите сообщение об ошибке, вам будет проще найти проблему.
Неверные IP-адреса в логах
Когда ваша установка Elgg находится за прокси-сервером или балансировщиком нагрузки, IP-адреса, записываемые в плагине System Log, могут быть неверными. Они могут показывать только IP-адреса прокси-сервера.
Чтобы решить эту проблему, вы можете настроить IP-адреса прокси-сервера как доверенные, что позволит системе получать корректные IP-адреса ваших пользователей.
В файле settings.php вы можете настроить параметры $CONFIG->http_request_trusted_proxy_ips и $CONFIG->http_request_trusted_proxy_headers. Дополнительную информацию см. в файле settings.php.