WSOD на страницах администрирования
Вот факты:
- Выполнена чистая установка Drupal 6.20
- Установлен и включен Меню администратора модуль
С этого момента я не могу получить доступ ни к одной странице admin/*
, однако я могу получить доступ как к node/*
, так и user/*
...
Журнал PHP:
No entries
Журнал ошибок Apache:
No entries
Журнал доступа Apache:
127.0.0.1 - - [10/Mar/2011:16:22:16 +0000] "GET /drupal_testes/ HTTP/1.0" 200 5771
127.0.0.1 - - [10/Mar/2011:16:22:14 +0000] "GET /drupal_testes/admin HTTP/1.1" 200 -
Сторожевой таймер таблицы БД:
Nothing serious...
И это все, для одного доступа к /drupal_testes/admin
...
Отключение admin_menu (в системной таблице) действительно работает. Кроме того, в качестве примечания, когда я перейду в admin/build/modules
и попытаюсь снова включить меню администратора, загрузка страницы займет целую вечность и закончится в WSOD.
После этого, если я перейду на drupal_testes/node
, admin_menu будет активным и работающим, за исключением страниц admin/*
.
Я знаю о Пошаговом руководстве WSOD, но, похоже, ни одна из причин не применима к этому случаю..
Есть идеи, почему это может происходить?
Правка #4
Редактировать #5
- Установка CCK, которая теоретически намного тяжелее, чем Токен или меню администратора, не представляет проблем.
- Очистка таблиц
cache_*
ничего не меняет. - Увеличение php.ini
memory_limit
не имело никакого значения...
Хотя проблема решается путем отключения модулей-нарушителей, цель состоит в том, чтобы они были активны и работает должным образом...
3 answers
Если вы только что запустили новый сайт /еще не содержит никаких данных, как вы, кажется, указали в своем вопросе, возможно, будет быстрее переустановить Drupal, чем искать источник WSOD.
В противном случае вы могли бы заглянуть непосредственно в базу данных:
Во-первых, проверьте таблицу сторожевого пса: в ней могут содержаться сообщения об ошибках, которые не отображаются в журналах Apache и PHP
Затем очистите кэши, усекая каждую таблицу с именем
cache_something
Затем, если вы уверены, что именно этот модуль вызвал проблему, вы можете отредактировать список включенных модулей в таблице
system
: найдите модуль в списке и измените егоstatus to "0"
Но если вы вносите какие-либо изменения непосредственно в базу данных, обязательно сначала сохраните резервную копию, на всякий случай;-)
Убедитесь, что ваш лимит памяти PHP установлен на 32 МБ (или больше) и что у вас включена буферизация вывода.
Я не знаю, происходит ли это в вашем случае, но подпись спецификации, присутствующую перед началом <?php
, трудно увидеть. У меня была проблема с модулем, и выяснилось, что WSOD был вызван подписью спецификации, добавленной редактором, который я использовал, которая затем не отображалась, когда я редактировал файл с помощью моего обычного редактора. Затем я обнаружил, что редактор был настроен на добавление подписи спецификации по умолчанию.
Существуют также некоторые символы Юникода, которые имеют аналогичное назначение в пробел, но они не отображаются в некоторых редакторах. Это случилось и со мной, и я не смог понять причину WSOD, пока не опубликовал содержимое файла на форуме и не использовал Firefox для просмотра этой страницы форума.