Перейти к публикации

Модуль предмодерации на фронтенде


Рекомендованные сообщения

На сайте включена предмодерация комментариев. Для удобства модераторов, долгое время использовался переделанный модуль вывода последних комментариев (iComm) с кнопками "опубликовать" и "удалить". Но после обновления с PHP 5.3 на PHP 7 - данный модуль перестал работать как надо (как и BlockPro2 и BlockPro3 от Пафнутия).

Что интересно данные в него из базы заходят, но в шаблон почему то не вставляются. Так как документации на $tpl->compile, $tpl->result и прочие команды не могу найти, прошу подсказать - что нужно подправить чтобы он заработал, уже всю голову сломал.

Вот код модуля icomm.php

Ссылка на сообщение
Поделиться на других сайтах

Так как доступа к php.ini у меня нет (сайт на VPS), пробую включить отображение ошибок:

1. В конце .htaccess

# log php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag  log_errors on
php_value error_log /var/www/site/php_errors.log

2. В скрипте

@ini_set('log_errors', 'On');
@ini_set('display_errors','Off');
@ini_set('error_log', '/var/www/site/php_errors.log');

Потом пробую вызвать принудительно запись в лог:

 error_log('Test');

Но ничего не происходит - даже файл журнала не создается (хотя сам скрипт отрабатывается). Смена места расположения логфайла не помогает. Создал вручную лог файл в корне сайта, присвоил ему права 666 - все равно в него ничего не пишется.

 

Либо в движке DLE стоит преимущественное подавление ошибок, либо PHP7 не дает скриптам менять глобальные настройки.

Изменено пользователем YuriBtr
Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, YuriBtr сказал:

сайт на VPS

 

16 минут назад, YuriBtr сказал:

доступа к php.ini

Это как? Доступа к php.ini может не быть на обычном шаред хостенге, но никак ни на VPS. На VPS есть доступ абсолютно ко всем файлам.

Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, germanydletest сказал:

 

Это как? Доступа к php.ini может не быть на обычном шаред хостенге, но никак ни на VPS. На VPS есть доступ абсолютно ко всем файлам.

Может вы имели в виду VDS? На моем хостинге достаточно жестко ограничены права - видимо из за того, что администрирование сервера ведется самим хостером.

 

В скрипте немного модифицировал включение логирования:

echo @ini_set('log_errors', 'On');
echo @ini_set('display_errors','Off');
echo @ini_set('error_log', '/var/www/site/php_errors.log');
error_log('Test');

Теперь в месте вызова скрипта возвращает: 11/var/www/site/php_errors.log

(то есть все присваивается) но ничего не пишется (((((

Изменено пользователем YuriBtr
Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, YuriBtr сказал:

Может вы имели в виду VDS?

а какая разница между VPS и VDS, помимо типа виртуализации?

 

Цитата

VPS (англ. Virtual Private Server) или VDS (англ. Virtual Dedicated Server) — услуга, в рамках которой пользователю предоставляется так называемый Виртуальный выделенный сервер. В плане управления операционной системой по большей части она соответствует физическому выделенному серверу. В частности: root-доступ, собственные IP-адреса, порты, правила фильтрования и таблицы маршрутизации.

 

Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, germanydletest сказал:

а какая разница между VPS и VDS, помимо типа виртуализации?

 

 

Да, вы правы я оговорился - хотел сказать физический выделенный сервер.
 

Тем не менее - есть у кого нибудь идеи как заставить этот скрипт работать на PHP7 (на PHP5.3 все работало четко)?

И почему же логи не пишутся?

Ссылка на сообщение
Поделиться на других сайтах
59 минут назад, webair сказал:

А на php 5.6 как?

К сожалению нет возможности испытать. Если есть возможность - можете подключить к какому нибудь сайту на PHP 5.6 - проверить - буду очень благодарен.

Ссылка на сообщение
Поделиться на других сайтах

Логи все таки пишутся! Но совершенно не то что надо. За весь день логирования поймалась только одна ошибка:

Uncaught Error: Call to undefined function dle_session() in /var/www/site/engine/init.php:56
Stack trace:
#0 /var/www/site/index.php(30): require_once()
#1 {main}
  thrown in /var/www/site/engine/init.php on line 56

А ошибок в скрипте вывода комментариев никаких ошибок нет ((((

Даже не знаю в какую сторону копать. Проверил изменения с PHP 5.3 до PHP7.0 - вроде как там нет ничего что использовалось бы в моем скрипте.

Ссылка на сообщение
Поделиться на других сайтах
В 23.01.2017 в 22:35, YuriBtr сказал:

Логи все таки пишутся! Но совершенно не то что надо. За весь день логирования поймалась только одна ошибка:


Uncaught Error: Call to undefined function dle_session() in /var/www/site/engine/init.php:56
Stack trace:
#0 /var/www/site/index.php(30): require_once()
#1 {main}
  thrown in /var/www/site/engine/init.php on line 56

А ошибок в скрипте вывода комментариев никаких ошибок нет ((((

Даже не знаю в какую сторону копать. Проверил изменения с PHP 5.3 до PHP7.0 - вроде как там нет ничего что использовалось бы в моем скрипте.

Да конечно, по вашему PHP 7 вообще почти похож на PHP 5 и там ничего нового такого нет...
И обратная совместимость полная...

Ни версии DLE, ни настроек PHP, ничего...
Короче ждите второго прихода ванги, она вам расскажет в чём дело...

Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, SKYNET74 сказал:

Да конечно, по вашему PHP 7 вообще почти похож на PHP 5 и там ничего нового такого нет...
И обратная совместимость полная...

Я такого не говорил. Вот моя цитата:

Цитата

Проверил изменения с PHP 5.3 до PHP7.0 - вроде как там нет ничего что использовалось бы в моем скрипте.

 

10 минут назад, SKYNET74 сказал:

Ни версии DLE, ни настроек PHP, ничего...
Короче ждите второго прихода ванги, она вам расскажет в чём дело...

 

Скрипт довольно маленький - на него есть ссылка в первом посте. DLE версии 11.2, какие настройки PHP нужны для диагностики?

Ссылка на сообщение
Поделиться на других сайтах
30 минут назад, YuriBtr сказал:

Я такого не говорил. Вот моя цитата:

 

 

Скрипт довольно маленький - на него есть ссылка в первом посте. DLE версии 11.2, какие настройки PHP нужны для диагностики?

Ошибки с модулем не связаны в логе, нужно на месте смотреть, так не понятно в чём дело...

Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, SKYNET74 сказал:

Ошибки с модулем не связаны в логе, нужно на месте смотреть, так не понятно в чём дело...

Спасибо, это я понял и так. Можете подключить к себе модуль - там все прозрачно и просто. Файл шаблона здесь. Буду благодарен, если найдете проблему - модуль реально полезный, так как облегчает предмодерацию.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, YuriBtr сказал:

Спасибо, это я понял и так. Можете подключить к себе модуль - там все прозрачно и просто. Файл шаблона здесь. Буду благодарен, если найдете проблему - модуль реально полезный, так как облегчает предмодерацию.

Никто не будет тестировать ничего у себя это точно, максимум кто то из гуру у вас на месте посмотрит за $.

Ссылка на сообщение
Поделиться на других сайтах

ТС, а не судьба обратится к разработчику, по этому поводу, тем паче имя знаешь http://pafnuty.name/ ?;)

BlockPro уже 4.7 есть, и да, на заметку, старые версии DLE тоже не поддерживают php v.7+

Ссылка на сообщение
Поделиться на других сайтах

Умоляю, никогда не делайте так, скрипты нужно закрывать иначе от внешнего вызова.

 

  1. if (!defined('DATALIFEENGINE')) {
  2.     die("Hacking attempt!");
  3. }
Ссылка на сообщение
Поделиться на других сайтах
В 25.01.2017 в 13:21, draxxx сказал:

Умоляю, никогда не делайте так, скрипты нужно закрывать иначе от внешнего вызова.

 

  1. if (!defined('DATALIFEENGINE')) {
  2.     die("Hacking attempt!");
  3. }

Эмммм, вы код самой DLE смотрели? Там все так сделано. Или у вас есть лучше вариант?

 

В 25.01.2017 в 00:22, SKYNET74 сказал:

Никто не будет тестировать ничего у себя это точно, максимум кто то из гуру у вас на месте посмотрит за $.

Не думаю что за 5$ кто-то тут будет ломать голову. А больше он не стоит.

 

В 25.01.2017 в 01:26, Captain сказал:

ТС, а не судьба обратится к разработчику, по этому поводу, тем паче имя знаешь http://pafnuty.name/ ?;)

BlockPro уже 4.7 есть, и да, на заметку, старые версии DLE тоже не поддерживают php v.7+

Пафнутий красава конечно но вряд ли ему интересен фриланс. А меня выбешивают языки с динамической типизацией, да еще и без возможности нормальной отладки. Но если никто из гуру PHP не поможет, придется наверное к нему обращаться.

Ссылка на сообщение
Поделиться на других сайтах
В 26.01.2017 в 19:34, YuriBtr сказал:

Эмммм, вы код самой DLE смотрели? Там все так сделано. Или у вас есть лучше вариант?

Лучше ничего, чем такое. Найдите это в symfony, laravel, phalcon, я пожелаю вам удачи.

Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, draxxx сказал:

Лучше ничего, чем такое. Найдите это в symfony, laravel, phalcon, я пожелаю вам удачи.

Извините, но вы сами себе противоречите. Сначала вы сказали что закрывать надо иначе, сейчас пишете что лучше не закрывать чем так как сейчас. Но если у вас есть вариант - предложите. Ведь мы все пользуемся этим скриптом и вы видимо тоже. Ваши предложения мы передадим автору скрипта. Это должно пойти нам всем на пользу.

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, YuriBtr сказал:

Извините, но вы сами себе противоречите. Сначала вы сказали что закрывать надо иначе, сейчас пишете что лучше не закрывать чем так как сейчас. Но если у вас есть вариант - предложите. Ведь мы все пользуемся этим скриптом и вы видимо тоже. Ваши предложения мы передадим автору скрипта. Это должно пойти нам всем на пользу.

Ну человек просто не изучил DLE, но уже приступил к написанию суперпупермегагигапетраситра модулей для DLE...
Такое бывает, это проходит.
PS: Это действительно устаревший подход, но и DLE не пару лет отродясь...

Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, SKYNET74 сказал:

Ну человек просто не изучил DLE, но уже приступил к написанию суперпупермегагигапетраситра модулей для DLE...
Такое бывает, это проходит.
PS: Это действительно устаревший подход, но и DLE не пару лет отродясь...

Я пишу только свою платформу, от DLE беру только ID сессии и всё...

Ссылка на сообщение
Поделиться на других сайтах
27 минут назад, draxxx сказал:

Я пишу только свою платформу, от DLE беру только ID сессии и всё...

Ну вы можете объяснить как лучше делать? Потому как пока только два варианта защиты от внешнего вызова я видел:

1. то как сделано в DLE

2. вынос таких скриптов за пределы папки сайта (обычно на уровень выше или в специальную папку со скриптами)

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, YuriBtr сказал:

Ну вы можете объяснить как лучше делать? Потому как пока только два варианта защиты от внешнего вызова я видел:

1. то как сделано в DLE

2. вынос таких скриптов за пределы папки сайта (обычно на уровень выше или в специальную папку со скриптами)

В большинстве случаев так и делается, просто используются уже переменная типа $_INCLUDE, а не этот архивариум...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...