Здраствуйте!
У меня друпал 5.7, крутится на линуксовой тачке с Debian Etch, Apache 2.2.3, PHP 5.2.0-8. С недавних пор возникла такая проблема: при редактировании любого материала(комментария, статьи, etc), и при отправке нового, после нажатия кнопки Отправить появляется пустая страница. Причём когда я залогинен под администратором, выводится информация модуля debug (я включил его только для админа), что-то типа "Время генерации страницы столько-то, Memory usage столько-то".
Когда на этой пустой странице жму F5, всё прогружается, но сверху написано:
"Сообщение Статья успешно обновлено.
Содержимое было изменено другим пользователем, изменения не удается сохранить."
Проблема проявляется в браузерах Opera и Firefox 2, в IE не смотрел.
В логах апача вроде тихо:
192.168.10.2 - - [12/Jul/2008:21:29:48 +0400] "GET /node/408 HTTP/1.1" 200 23414 "http://mysite.org/node" "Opera/9.26 (Windows NT 5.1; U; ru)"
192.168.10.2 - - [12/Jul/2008:21:29:49 +0400] "GET /?q=quicktags HTTP/1.1" 200 1975 "http://mysite.org/node/408" "Opera/9.26 (Windows NT 5.1; U; ru)"
192.168.10.2 - - [12/Jul/2008:21:29:50 +0400] "GET /files/images/happyvalentine3fq8.thumbnail.jpg HTTP/1.1" 200 12138 "http://mysite.org/node/408" "Opera/9.26 (Windows NT 5.1; U; ru)"
192.168.10.2 - - [12/Jul/2008:21:29:53 +0400] "GET /node/408/edit HTTP/1.1" 200 35901 "http://mysite.org/node/408" "Opera/9.26 (Windows NT 5.1; U; ru)"
192.168.10.2 - - [12/Jul/2008:21:29:54 +0400] "GET /?q=quicktags HTTP/1.1" 200 1975 "http://mysite.org/node/408/edit" "Opera/9.26 (Windows NT 5.1; U; ru)"
192.168.10.2 - - [12/Jul/2008:21:29:54 +0400] "GET /files/images/1205442051085.thumbnail.png HTTP/1.1" 200 10339 "http://mysite.org/node/408/edit" "Opera/9.26 (Windows NT 5.1; U; ru)"
192.168.10.2 - - [12/Jul/2008:21:29:57 +0400] "POST /node/408/edit HTTP/1.1" 200 333 "http://mysite.org/node/408/edit" "Opera/9.26 (Windows NT 5.1; U; ru)"
Последняя строка, видимо, соответсвует корявому выводу - длина 333 байта, хотя страницы должны быть по 20-30 кбайт.
От чего может возникать такая проблема?
Комментарии
проверить лог ошибок php, для начала... Может, возникает ошибка, но не отображается на экран.
Хм, а про лог похапе я и не подумал.
Тем не менее, в нём пусто. Видимо, никаких ошибок/ворнингов при исполнении кода нет.
Может памяти не хватает? + Пробовали облегчить базу?
Да я уже в конфиге php поставил memory_limit = 32M - в два раза больше, чем по дефолту, бесполезно... debug говорит, что Memory used at devel_init() в среднем 11-12 Мб, Memory used at devel_shutdown() около 13-15 MB. Файлы базы данных друпала весят 14 Мб, это вроде нормально?..
А если попробовать отключить devel?
Он много памяти жрет, вроде бы.
Похоже у вас стоит модуль images? Ему «по дефолту» 32 маловато, а еще и devel отбирает.
Image и Imagecache требуется 96 МБ (написанно где-то, кажется в ридми тоже)
У меня стоит лимит = 128МБ и то не до devel.
Поставил memory_limit = 128M, отключил модуль devel - бесполезно, та же картина... За исключением того, что размер кривого ответа теперь - 3 байта
З.Ы. На тачке кстати 386М оперативки, неужели этого мало для друпала?
З.З.Ы. Перенёс сайт на виндовую тачку с денвером, для теста. Там ситуация повторяется, хотя в денвере по умолчанию память, отведённая скрипту, вообще не лимитирована. А вдобавок иногда появляется вот такое:
warning: Cannot modify header information - headers already sent by (output started at z:\home\test.org\www\themes\nonzero\template.php:1) in z:\home\test.org\www\includes\session.inc on line 100.
warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in z:\home\test.org\www\includes\session.inc on line 103.
(причём иногда говорит, что output started at /var/www/modules/comment/comment.module:1)
Это часом не из-за того, что я правил template.php?
Ага, теперь всё время вверху страницы вылазит надоедливое
warning: Cannot modify header information - headers already sent by (output started at /var/www/modules/comment/comment.module:1) in /var/www/includes/common.inc on line 141.
Смекаю, что это из-за того, что я правил кое-какие php-файлы. Только не пойму, из-за чего именно... я же там везде по чуть-чуть... там строчку добавлю, там удалю... 0_о
Такая ошибка выдается когда происходит попытка послать http header , уже после начала вывода контента (достаточно даже вывода просто пустой строки)- ищите где вы там че правили (особенно если правили модули ядра)
Ураа, починил. Дело оказалось в том, что я сохранил файлы comment.module и template.php (в теме) в формате UTF-8, а друпалу это не понравилось 0_о После сохранения в ANSI всё встало на свои места.
Всем спасибо за советы!
Скорее, ты сохранил в UTF-8 с BOM... Это звучит правдоподобно. Но сохранять надо в UTF-8 без BOM.
С этого и надо было начинать, а ты нам головы морочишь!
Razunter, да нет, я в Notepad++ правил, вставил в print русский текст - на сайте кракозябры, вот я ткнул в пимпу "Кодировки -> Преобразовать в UTF8"... как оказалось, зря... А что такое BOM, я не шарю, лучше уж в ANSI посохраняю на английском, а по русски через Localizer всё сделаю.
EllECTRONC Сорри... кто ж знал, что такая багофича с кодировками скриптов...
«да нет, я в Notepad++ правил, вставил в print русский текст - на сайте кракозябры, вот я ткнул в пимпу "Кодировки -> Преобразовать в UTF8"... как оказалось, зря... А что такое BOM, я не шарю, лучше уж в ANSI посохраняю на английском, а по русски через Localizer всё сделаю.»
Да не надо изобретать велосипед - в том же notepad++ жмите Преобразовать в UTF-8 без BOM и можете смело использовать русские буковки в темплейтах.
PS. BOM - byte-order mark, такой спец. символ
Такая же ситуация была. Думал, что-то сломалось. Странно, что друпал, отображающий страницы в утф не хочет работать с файлами в кодировке утф.
А как теперь эти файлы отловить, если неизвестно, какие именно изменены?