-
Публикации
79 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
2
Сообщения, опубликованные пользователем Alex-GR
-
-
384149 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Undefined constant "error" in /var/www/1111/data/www/site.ru/engine/classes/recaptcha.php:105
Смотрим 105 строку файла recaptcha.php и видим, что нет кавычек в переменной $answers:
$answers [error-codes]
А должно быть:
$answers['error-codes']
Исправьте ошибку.
-
23 минуты назад, celsoft сказал:
Не стоит задача снижать нагрузку, и не может стоять, потому как контента может быть много на странице, есть еще комментарии, есть еще custom комментариев и т.д.
Задача стоит исключительно в том чтобы экономить трафик а также увеличивать скорость переиндексации т.к. поисковику не нужно самому обрабатывать контент. Все. Больше никаких задач не стоит в данном случае и стоять не может.
Возможно это и так - вы разработчики, и вы знаете код лучше.
А баг ваш когда устраните?
-
И уж если, цитирую:
"Для публикаций добавлена поддержка отдачи заголовка "304 Not Modified", в случае отправки на сервер соответствующего запроса от поисковых систем. Если публикация не редактировалась за указанный период, то DLE будет отдавать просто короткий соответствующий HTTP с кодом 304. Что позволит снизить расход трафика на сервере, и несколько снизить нагрузку на сервер."
стоит задача снизить нагрузку на сервер, то стоит проверку модификации публикации организовать как можно ближе к получению переменной $_DOCUMENT_DATE из БД (или кеша), в файлах show.full.php и static.php, а не выполнять "туевую хучу" кода (в том числе и запросов к БД) до проверки модификации публикации бесполезно.
-
А если вы перед эхо очистите буфер - то код сайта выводится не будет, только строка "Есть данные":
if ($IfModifiedSince && $IfModifiedSince >= $_DOCUMENT_DATE) { //header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); ob_end_clean(); echo 'Есть данные'; die();
Ну и "вишенка на торте". Вот такой код:
if ($IfModifiedSince && $IfModifiedSince >= $_DOCUMENT_DATE) { ob_end_clean(); header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); die(); }
отрабатывает без предупреждений со стороны Nginx.
-
И ещё - сделайте простую проверку того, что данные передаются до вывода заголовка 304 Not Modified: в файле /engine/modules/functions.php закомментируйте строку и добавьте echo, чтобы быть уверенным, что отрабатывает именно этот код:
//header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); echo 'Есть данные';
и через curl отправьте запрос с указанием заголовка If-Modified-Since - вы получите код сайта и в конце текст "Есть данные", хотя кода быть не должно! Вывод должен быть нулевым.
-
11 минут назад, proba сказал:
Нет!
Тогда как вы объясните тот момент, что варнинги перестают сыпаться в лог ошибок после переноса кода проверки даты с функции GzipOut выше первого echo в файле /engine/modules/main.php?
-
Как я и обещал, я решил причину вывода предупреждения Nginx. Это баг DLE версии 14.2.
Виновником оказался код DLE, а вернее невнимательность его разработчиков.
Для начала хочу напомнить celsoft-ту вот это правило: https://www.php.net/manual/ru/function.header.php
Оно гласит: "Помните, что функцию header() можно вызывать только если клиенту ещё не передавались данные. То есть она должна идти первой в выводе, перед её вызовом не должно быть никаких HTML-тегов, пустых строк и т.п.".
Теперь смотрим файл /engine/modules/functions.php, в котором прописана функция GzipOut. В ней проверяются 2 условия - в запросе должен быть заголовок If-Modified-Since и сравнивается дата изменения документа с датой, переданной в заголовке If-Modified-Since. Все верно, все работает правильно.
Теперь смотрим, где вызывается функция GzipOut? Это файл /engine/modules/main.php, самый конец. А чуть выше идёт передача данных клиенту:
echo $tpl->result['main']; echo "\n<!-- DataLife Engine Copyright SoftNews Media Group (http://dle-news.ru) -->\r\n";
Нарушено приведённое выше правило для функции header(). Вырезаем код проверки даты из функции GzipOut и вставляем его выше строки
echo $tpl->result['main'];
И о чудо - все работает правильно, предупреждений от Nginx нет, не нужно "настраивать и тюнинговать сервер и искать нестыковки в конфигурациях"!
Остались только те проблемы, которые в компетенции DLE, верно?- 2
-
6 часов назад, celsoft сказал:
его ставит апач
Апача нет. Nginx + PHP-FPM.
Я, конечно, только учусь. Но я докопаюсь до причины.
Не понятно, почему вы так против. Я обозначил проблему, и я её решу.
Вам то легче её решить. У вас знаний и опыта больше. Но если не хотите - ваше право. Напрягает отношение к клиентам.
13 лет я с вами. И вы тихонечко посылаете меня на.... Почему? За что?
Впрочем, это ваше право. Зря я лицензии покупал. C таким отношением...
- 1
-
3 часа назад, celsoft сказал:
Вообще не имеет никакого отношения к DLE и к версии DLE. Ошибка говорит что на сервер было посланы данные которые превышают лимиты установленные на сервере. DLE работает на сервере. А данные посылает не DLE, а пользователь сайта, например браузер или вообще любой клиент.
Имеет отношение к DLE. При запросе поисковиков с заголовком If-Modified-Since DLE возвращает ответ "HTTP/1.1 304 Not Modified" и "Content-Length 0" именно Nginx, который принимает не нулевые данные, указанные в заголовке Content-Length и посланные DLE. Не снаружи, а внутри. Отсюда и варнинг.
Тут данные посылаются не на сервер, а идет ответ на запрос поисковика с DLE на Nginx, и в заголовках и реальных данных расхождение. Как решить эту проблему?
-
Добрый день!
При переходе на версию 14.2 в логах Nginx появились предупреждения вида:
[warn] 27840#27840: *85737 upstream sent more data than specified in "Content-Length" header while reading upstream, client: 66.249.76.61, server: ...
Они возникают в момент обращения поисковиков к страницам сайта: поисковик делает запрос на сайт с заголовком If-Modified-Since или If-None-Match и если контент страницы не изменился, движок отдает код "304 Not Modified" - именно в этом случае возникает ошибка. Кто подскажет, как можно убрать эти предупреждения?
Сайт - avtoforex.ru
-
15 часов назад, Mr. Bot сказал:
Но типичный контингент DLE щёлкает переключатели в панели и не думает о последствиях, т.к. не умеет об этом думать)
Рад, что "нетипичный" контингент умеет думать... тем местом, на котором сидит. И читать не умеет от слова "вообще"...
И почему девочки суют свой длинный нос туда, где "Макар телят не пас"? Вопрос риторический.
-
09.02.2021 в 00:42, Captain сказал:
Баг не баг, но стоит убрать главную страницу из цепочки, в справках Яндекса и Google её нет, первой позицией идёт рубрика.
Не уверен, что это правильно. Посмотрите строку навигации приведенной страницы Google ""Google. Пример разметки:
Главная - Центр Поиска Google - Документация - Расширенная поисковая оптимизация
Главная страница есть в строке навигации.
-
5 часов назад, MSK сказал:
расширение php установлено?
Вероятнее всего, эта ошибка связана с несовместимостью с PHP 8. Вот, например:
У меня лента RSS отключена, поэтому не было таких ошибок.
-
Еще ошибка:
PHP message: PHP Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array, null given in /var/www/.../engine/api/api.class.php:402
Наверное, нужно пересмотреть все функции count(), у меня в плагине точно такая же ошибка была.
И еще ошибка, там же:
PHP message: PHP Fatal error: Uncaught TypeError: chmod(): Argument #2 ($permissions) must be of type int, string given in /var/www/.../engine/api/api.class.php:418
-
02.02.2021 в 17:40, Xore сказал:
Есть проблема, что не будут загружаться файлы через download.php. Скачиваются пустые файлы
Да, есть такая проблема на страницах, где есть скачивание файлов:
PHP message: PHP Fatal error: Uncaught Error: Call to undefined function get_magic_quotes_gpc() in /var/www/.../engine/classes/min/lib/HTTP/ConditionalGet.php:319 PHP message: PHP Fatal error: Uncaught ArgumentCountError: set_time_limit() expects exactly 1 argument, 0 given in /var/www/.../engine/classes/download.class.php:105
Это пока все, что заметил. Тестирую дальше PHP 8 на локалке.
-
Добрый день всем посетителям форума! Вопрос к celsoft-ту.
Вышел PHP 8.0.1. В связи с этим вопрос - DLE 14.1 будет работать на нем? И если нет - когда планируете добавить поддержку PHP 8 в движок?
-
11 часов назад, Mr. Bot сказал:
Анализируйте таблицу _comment_rating_log, смотрите кому принадлежат IP.
Ну и для гостей это дело лучше впринципе прикрыть.Спасибо, дельный совет!
-
11 часов назад, alex32 сказал:
Может, просто контент так себе?
Может. Но рейтинг звездами для статей от пользователей редко когда опускается ниже 4. Есть вопросы, уточнения, благодарят за информацию, кто-то указывает на найденные ошибки. Но абсолютно все комменты -1.
4 часа назад, kamensk сказал:Автор в чем проблема? Если ты хошь, чтобы тебе шли только положительные отлики - ставь тогда вариант рейтинга только "нравится" и не будет тогда самолюбие ущемленно))
Да не в самолюбии дело. Вы не поняли. Для всех 100% комментов выставлен рейтинг -1. Сегодня опубликовал коммент, через время он уже -1. Да и попробуйте вручную коменнты для более 600 статей перелопатить и выставить -1.
Говорю же - больше на бота похоже, "комментный маньяк" - это уж совсем из области фантастики.
-
Модуль googlemap.
Вначале идет кнопка "Уведомить поисковые системы о наличии новой версии карты сайта", а в самом конце - "Создать / Обновить файл карты сайта".
Возможно, вначале нужно сгенерить сайтемап, а потом его уже отправлять? И кнопки в таком же приоритете расставить?
Фигня, конечно, но...
Заранее благодарен, если прислушаетесь. Выкину пару строк из плагина.
-
Добрый день всему сообществу!
Возник такой вопрос: все комментарии на сайте получили -1. Настройка комментов - "нравится", "не нравится". Некоторые поправил на 0, но через время они опять оказались в -1. Такое ощущение, что это какой-то бот индексирует эти ява скрипты и накручивает "минус единички". Далек от мысли, что это маньяк следит за коментами и всем ставит -1. Ладно - мне. Но всем подряд? И на всех страницах?
Никто не сталкивался с такими проблемами? Может, Celsoft что-то сможет подсказать?
_ttps://avtoforex.ru
Заранее благодарен за обратную связь - возможно, ваш ответ "подтолкнет" на решение этой проблемы...
-
Уже вышла новая версия движка, но баг остается - я редактирую коммент и он автоматом публикуется, хотя я нажимаю кнопку "Принять исправления". Или так и было задумано изначально?
Вы уж ответьте, чтобы я понимал - исправите вы этот баг или нужно плагин писать?
Простите, забыл - avtoforex.ru
-
Если отредактировать комментарий, то он автоматом публикуется, но продолжает "висеть" в графе " Комментарии ожидающие проверки: " до тех пор, пока не очистишь кеш. Хотя, по идее, публиковаться коммент должен только тогда, когда я проверил текст после редактирования и одобрил его.
- 1
-
17 минут назад, celsoft сказал:
Я не даю готовых инструкций для злоумышленников. Если вы считаете что сделали все правильно, это ваш личный собственный выбор. Мое дело вас предупредить, а дальше вы уже делаете свой выбор. Я вас не отговариваю.
Конечно не даете - для данного случая их просто нет. Если внимательно посмотреть вот на эту часть настроек:
Optional: (figcaption, Flow) | (Flow, figcaption) | Flow
то мы увидим, что для тега figure разрешены или потомки figcaption, Flow, или потомки Flow, figcaption, или потомки Flow.
Открываем официальный сайт HTML Purifier с примерами http://htmlpurifier.org/docs/enduser-customize.html и читаем:
ЦитатаFlow - Any number of inline elements, block elements and text, like div
Другими словами, возможны 3 варианта расположения потомков в теге figure:
<figure> <figcaption></figcaption> инлайновые элементы, блочные элементы и текст </figure> <figure> инлайновые элементы, блочные элементы и текст <figcaption></figcaption> </figure> <figure> инлайновые элементы, блочные элементы и текст </figure>
Но в такой конфигурации парсер почему-то вырезает теги thumb, а если оставить только Flow - то нет.
Где дыра?
38 минут назад, celsoft сказал:А мета только для микроразметки используется? Нет. Это управляющий важной информацией код, влияющий на кодировку, на метатеги страницы, и т.д. И его использование просто в тексте новости небезопасно, поэтому его не не может быть, как того же JS. Опасность для сайта не только воровство вашего пароля, но понижение его ранжирования и изменение кодировки и влияние на отображение. А это все может делать тег <meta>
Вот именно с этой точки зрения и с той точки зрения, что грамотный вебмастер будет максимально автоматизировать свой труд, я и не стал лезть в настройки редактора Froala Editor для того, чтобы прописывать микроразметку изображений. Это все делается плагином в парсере автоматически.
-
5 часов назад, celsoft сказал:
Какой незакрытый класс? Все в коде который предназначен для показа уменьшенной копии с увеличением корректно закрыто и валидно. Поэтому вы вставляете некорректный код видимо. Более того редактор Froala Editor сам вставляет картинки именно в виде HTML может, а использовать BB теги или HTML для вставки картинок, указывается в настройках DLE в админпанели. Поэтому утверждать что Froala Editor не поддерживает вставку в виде HTML для уменьшенных картинок некорректно. Таких проблем в DLE нет.
Да, здесь я неправ - когда тестировал вставку HTML кода увеличивающегося по клику изображения, забыл закрывающий тег </a>, а редактор его вставлял неправильно.
5 часов назад, celsoft сказал:Потому что изучите HTML стандарты. В div может быть любой обычный текст, а в figure нет. Поэтому никакого бага тут нет. DLE проверяет валидность HTML кода, что является основой в безопасности скрипта и вашего сайта в целом.
Давайте посмотрим на эту страничку: https://developer.mozilla.org/ru/docs/Web/HTML/Element/figure
HTML-элемент <figure> (Иллюстрация с необязательной подписью) представляет самостоятельный контент, часто с подписью (заголовком), которая указывается с помощью элемента (<figcaption>). Диаграмма и её подпись представляет собой единое целое.
Категории контента:
Основной поток, секционный корень, явный контент
Разрешённое содержимое:
Элемент <figcaption> за которым следует основной поток; или поточный контент за которым следует элемент <figcaption>; или поточный контент.
Читаем определение основного потока: https://developer.mozilla.org/ru/docs/Web/Guide/HTML/Content_categories#Основной_поток
Основной поток
Элементы основного потока обычно содержат текст и встроенный контент.
HTML стандарты говорят о том, что в теге <figure> может быть текст.
Идем дальше. Версия DLE 13.3. Установлена "с нуля".
<figure> <a itemprop="image" itemscope itemtype="https://schema.org/ImageObject" itemprop="url contentUrl" class="highslide" href="https://site.ru/uploads/boxsmall.jpg" target="_blank"> <img itemprop="url contentUrl" src="https://site.ru/uploads/boxsmall.jpg" alt="Принцип работы советника Setka TLP." class="fr-fic fr-dii"> <meta itemprop="width" content="300"> <meta itemprop="height" content="411"> </a> <figcaption>Подпись к картинке.</figcaption> </figure>
Это валидный код? Теги meta уже вырежет парсер редактора Froala Editor. Нужно настраивать редактор. Или можно вставить изображение в тегах thumb, а в парсере DLE переписать код парсинга тега thumb так, чтобы он автоматом добавлял микроразметку к изображению. И не расписывать вручную код каждой картинки, которых на сайте может быть тысячи.
5 часов назад, celsoft сказал:Решать нужно правильно и корректно, как вам и написали, а не делать дыру в безопасности сайта. Что вы и успешно сделали своей строчкой в плагине.
О какой дыре в безопасности идет речь? Если в файле engine/classes/parse.class.php поменять код:
$def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common'); на $def->addElement('figure', 'Block', 'Flow', 'Common');
Если я чего то не понимаю - объсните конкретней, а не кидайтесь громкими беспочвенными фразами.
И еще момент. Редактор Froala Editor к каждому изображению добавляет класс.
Объясню подробней. Вствляем 3 изображения в полную новость:
<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii"> <img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii"> <img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii">
Пока все правильно - редактор добавил к каждому изображению сласс fr-fic fr-dii. Класс fr-dii предназначен для выравнивания по центру, класс fr-fil - выравнивание слева, а класс fr-fir - справа.
Теперь встроенными средствами выравниваем второе изображение справа, а третье - слева. И получаем код:
<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii"> <img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii fr-fir"> <img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii fr-fil">
Редактор не удаляет класс fr-dii, а добавляет классы fr-fil и fr-fir к нему. Не уверен, что это правильно.
Варнинг при переходе по скрытой ссылке
в Прием багов
Опубликовано: · Изменено пользователем Alex-GR
Бот Бинга "compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm" нашел на сайте скрытую ссылку и переходит по ней не с сайта, а напрямую:
https://site.ru/engine/go.php?url=aHR0cDovL3d3dy5xxxxxxyb2JvZm9yZXgucnUvb3BlcmF0aW9ucy93ZWxXXXXWJvbnVzLz9hPXXXXXD%3D
В результате генерируется варнинг:
[error] 6433#6433: *204088 FastCGI sent in stderr: "PHP message: PHP Warning: Undefined array key "HTTP_REFERER" in /var/www/5c73z9h6/data/www/site.ru/engine/go.php on line 47" while reading response header from upstream, client: 157.55.39.127, server: site.ru, request: "GET /engine/go.php?url=aHR0cDovL3d3dy5xxxxxxyb2JvZm9yZXgucnUvb3BlcmF0aW9ucy93ZWxXXXXWJvbnVzLz9hPXXXXXD%3D HTTP/2.0", upstream: "fastcgi://unix:/var/www/php-fpm/xxxxxx.sock:", host: "site.ru"
Нужно бы сделать проверку переменной HTTP_REFERER.
Не критично, но запланируйте на будущие релизы DLE.
Забыл указать:
Версия DataLife Engine: 14.3
Версия PHP: 8.0.10