Проблема с публикацией комментариев

Обнаружил странную проблему на всех своих русских блогах:

При постинге комментария незарегистрированным пользователем у него открывается совершенно пустая страница. Далее, коммент попадает на модерацию, но админ не получает уведомление по е-мэйлу.

WP 2.2.2 и 2.2.3

На английских все путем.

Кто-нибудь уже сталкивался с этим?

Плагин какой-то мешает. Попробуй для начала отключать и тестировать.

Плагин какой-то мешает. Попробуй для начала отключать и тестировать.

Отключал все – не помогает 🙁

P.S. Хороший аватар 🙂

а ты поставь другую тему и проверь все так же или нет??!!!!

если все работает в новой…. значить проблемы в твоей теме!!!! Может условия комментарий не поставлены или же совсем другие!…. Проверь другую тему

Дело, похоже, завязано на кодировку WP и MySQL.

Итак, проблема: при отсылке комментария незарегистрированным пользователем (и только им) и если комментарий сразу не попадает в спам Акисмета, то пользователь видит пустую страницу, при возврате в пост, его коммента с надписью, что коммент модерируется не видно. Админ не получает уведомления о комменте на модерацию, но в панели управления коммент виден. На стадии модерации.

Провел ряд экспериментов на двух разных хостингах (MySQL c UTF-8 и MySQL c Win-1251).

1. Проблема вылезла сразу после чистой инсталляции WP со стандартной темой.

2. Вылезла она только на хостинге, где MySQL c UTF-8.

3. Проблемными оказались только руссифицированные версии (обе), английская версия устанавливается и работает без проблем.

4. При подключении английской версии к базе проблемной русской версии – глюк остается.

Выводы: при установке локализованной версии с поддержкой UTF-8 в базу пишется некий параметр, вызывающий глюки с комментариями. Похоже, параметр неявный.

Возможно, я что-то упустил из виду.

Проблема пока не решена.

Вообще-то пустая страница это верный признак того, что отключен вывод сообщений об ошибках. Я думаю, что вначале можно было бы проверить логи ошибок и по ним определить, что именно не работает.

Вообще-то пустая страница это верный признак того, что отключен вывод сообщений об ошибках. Я думаю, что вначале можно было бы проверить логи ошибок и по ним определить, что именно не работает.

В любых других случаях сообщения об ошибках выдаются. И если нажать на пустой странице "обновить", то WP говорит, что такой коммент был только что отправлен.

По поводу логов – хостер сегодня что-то тупит – все мои сайты не доступны. Как только получу к ним доступ, загляну в логи.

Возможно, я что-то упустил из виду.

Что у кучи народа нормально работают локализованные версии. 😛

Без логов не разберешься. Или хотя бы DEBUG включить.

[quote=MyasNick]Возможно, я что-то упустил из виду.

Что у кучи народа нормально работают локализованные версии. 😛
Без логов не разберешься. Или хотя бы DEBUG включить.[/quote]
Учел, учел 🙂

Только вот оказалось не я один такой 🙂 Выясняется, что это как-то связано с особенностями хостинга McHost. :/

Подскажите, пожалуйста, как можно скинуть лог WP в файл и где его найти?

Вам не лог Вордпресса нужен, а лог ошибок апача. А где искать – у хостера спросите. Может быть, даже через контрольную панель можно посмотреть.

А я вот начал заглядываться в сторону mchost… а сборка русских WP у вас какая?

Думаю у mchost есть пробный бесплатный период, ну по крайней мере уважающие себя хостеры его предоставляют, и можно протестировать от и до все возможности WP.

А я вот начал заглядываться в сторону mchost... а сборка русских WP у вас какая?

Испытывал на обоих русских сборках (версии 2.2.х) и на английcкой.

Я имел в виду сборки Макса или Mywordpress?

Я имел в виду сборки Макса или Mywordpress?

обе!

На параллельном форуме Vlad предложил решение (работает!)

1. заходим в wp-includes
2. открываем comment.php
3. находим строку номер 400
4. удаляем вот этот кусок

if ( 'spam' !== $commentdata['comment_approved'] ) 
{ // If it's spam save it silently for later crunching
        if ( '0' == $commentdata['comment_approved'] )
            wp_notify_moderator($comment_ID);

        $post = &get_post($commentdata['comment_post_ID']); 
// Don't notify if it's your own comment

        if ( get_option('comments_notify') && 
$commentdata['comment_approved'] && 
$post->post_author != $commentdata['user_ID'] )
            wp_notify_postauthor($comment_ID, 
$commentdata['comment_type']);
    }

P.S. McHost все на кривость WP валит.

Ясно. Интересно, а менять этот код нужно только для McHost или и для других тоже?

Ясно. Интересно, а менять этот код нужно только для McHost или и для других тоже?

На другом хостере у меня все прекрасно работает.

извиняюсь, есть вопрос: как сделать чтобы анонимоусы могли оставлять комменты без премодерации?

Отключить ее =)

Отключить ее =)

Users must be registered and logged in to comment – отключено, и все равно если добавить коммент не залогиненным, то он не отображается и уходит в модерацию 🙁

наверное это изза это опции(Comment author must have a previously approved comment), щас буду тестировать

Думаю у mchost есть пробный бесплатный период, ну по крайней мере уважающие себя хостеры его предоставляют, и можно протестировать от и до все возможности WP.

бесплатного нету 😀 есть платный 1-й месяц

значит такой хостинг…

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

1. В заголовке более трех русских букв. При одной и двухбуквенных названиях блога у меня проблема не проявилась.
2. В заголовке "некачественное" сочетание латинских букв. Точнее установить не удалось.
3. Установлена любая руссификация WordPress.
4. Коллэйт поля Option_Value таблицы опций отличен от utf8_general_ci

Исходя из этого дыру можно залатать без применения хирургии в коде. Нужно убрать руссификацию, либо заменить исходники WordPress оригинальными, в настройках блога сменить название на "безопасную" комбинацию латинских букв (проверяется, как и все, комментированием из незалогиненного состояния), а правильное название блога жестко пропечатать в текущем темплейте. Если используете "All in One SEO", не забудьте заменить в его настройках %blog_title% на то, что нужно вам.

Удалил кусок в comment.php – коменты стали нормально работать, но почта не приходит.
Кто знает или эта проблема решена в 2.5.1?

Хорошо помогает установка плагина wpPHPMailer. Подробнее здесь в конце поста »

Вот не пойму как его поставить, я так понял он еще 2004 года, и на 2.5.1 его как-то по другому ставить надо. Не подскажете?

А в версии 2.5.1 удаление куска кода решает проблему с незарегистрироваными юзерами, а вот зарегистрированные видят белый экран.
Да и уведомления о коментах не приходят млин.

Все как обычно: скопировать в папку wp-content/plugins и активировать в панели управления, как любой другой плагин. У меня на WP 2.5.1 пока все работает нормально. Тьфу-тьфу-тьфу. Да, пользуюсь руссифицированной версией от Lecactus.

MyasNick, да, вот с этим плагином заработало, а вот тот что с оф сайта качал – не работал. Спасибо!

Евгений Яблоков из саппорта хостинга mchost.ru подсказал решение, за что ему отдельное спасибо.
Уточню, что это ОДНОЗНАЧНО решает вопрос на хостинге mchost.ru — проверено. С WordPress вообще ничего делать не надо.

Фишка в том, что необходимо установить PHP5 в режиме CGI.

Нужно:
1. Создать текстовый файл php (без расширения и без пробелов в имени) со следующим содержанием:

#!/usr/local/php5/bin/php -cphp-cgi.ini

2. Закачать созданный файл php в cgi-bin директорию своего домена.

3. Установить права на файл php 755 (-rwxr-xr-x).

4. В файле httpdocs/.htaccess своего домена прописать:

Action phpcgi-script /cgi-bin/php
AddHandler phpcgi-script .php

ВСЁ! У меня заработало. Всем удачи!

Anonymous
Отправить
Ответ на: