Обнаружена активная php сессия wordpress как исправить ошибку

Просмотр 7 ответов — с 1 по 7 (всего 7)

  • Модератор
    Yuri

    (@yube)

    Подскажите как решить.

    Найти и убрать. Скорее всего, с палагином или темой, использующими session_*, придется расстаться.

    Модератор
    Yui

    (@fierevere)

    永子

    https://ru.wordpress.org/plugins/health-check/
    можете поставить этот плагин и воспользоваться режимом решения проблем, включая или выключая плагины по одному

    Итак, установила плагин Health Check & Troubleshooting. Пробовала включать и отключать плагины, сейчас все плагины включены и этой проблемы нет. Т.е я понимаю что дело не в плагинах?
    При выходе из режима решения проблем также ошибка не появляется.

    Если деактивировать плагин Health Check & Troubleshooting проблема снова появляется.
    Т.е. этот плагин просто должен быть постоянно активен? Он как то влияет на работу сайта?

    Модератор
    Yui

    (@fierevere)

    永子

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

    Вне режиме решения проблем HeathCheck на работу сайта не влияет,
    он просто заменяет и расширяет меню Инструменты-Здоровье сайта

    Как платно получить помощь?

    Модератор
    Yui

    (@fierevere)

    永子

    Как платно получить помощь?

    поискать специалиста на фриланс-бирже, сайте .. ну или в этом разделе, если далеко ходить не хочется
    https://ru.wordpress.org/support/forum/community

    Эту беду дают контактные формы. Попробуй отключи и увидишь что исчезнет. Поменял контактную форму на CF 7. Проблема исчезла.

    • Ответ изменён 2 года, 5 месяцев назад пользователем somatism.
  • Просмотр 7 ответов — с 1 по 7 (всего 7)

    A PHP session was created by a session_start() function call. This interferes with REST API and loopback requests. The session should be closed by session_write_close() before making any HTTP requests.

    asked Oct 15, 2020 at 17:42

    Mohit Sharma's user avatar

    1

    In most cases, the real reason of the above errors is the incorrect mechanism for using PHP sessions within plugins or themes when they are using the session_start() function.

    Now you need to identify what plugin cause this issue by deactive your plugin one by one.

    Then in that plugin, you need to find a piece of code similar to this:

    if ( !session_id() ) {
        session_start();
    }
    

    then change it to:

    if ( !session_id() ) {
        session_start( [
            'read_and_close' => true,
        ] );
    }
    

    Then you are done. In most cases, this will fix the issue. Good luck!

    answered Nov 24, 2020 at 4:26

    thống nguyễn's user avatar

    thống nguyễnthống nguyễn

    7651 gold badge6 silver badges14 bronze badges

    2

    Had the same issue due to WP Hotel Booking plugin use. I fixed it! Took me a while to find a plugin it caused and editing the plugin .php didn’t help. But I fixed it adding a snippet of code to functions.php of the CHILD theme:

    function mymodule_curl_before_request($curlhandle){
    session_write_close();
    }
    add_action( ‘requests-curl.before_request’,’mymodule_curl_before_request’, 9999 );
    

    There’s a background to this solution at: Make WordPress Core, Loopback request fails if headers set in curl
    (Original link in German doesn’t exist anymore and was referring to this other related discussion.)

    MiB's user avatar

    MiB

    5752 gold badges11 silver badges26 bronze badges

    answered Jan 19, 2021 at 22:39

    Eugenia Filippova's user avatar

    3

    Often this critical issue is caused by conflict in SESSION when using the PHP session_start() function.
    For example I have used a Calculation plugin in WordPress and after WordPress version update this error occured.
    So I detected the plugin which causes this issue as activated/deactivated plugins one by one.

    SOLVING these errors: In File manager of my site I got the .php files of the plugin and searched for session_start() function. Where it was used after it I used this function in a row session_write_close();

    Source of the function

    Regards!

    answered Jan 12, 2021 at 0:03

    rossirm's user avatar

    rossirmrossirm

    311 silver badge4 bronze badges

    1

    To chime in with my own experience here, this very issue was resolved by turning off the “cross sell pop up” module of Shopengine Pro. Indeed there’s a session start in the php. I have notified them about this today. Maybe it’ll help someone else meantime!

    answered May 19, 2022 at 21:49

    David M.'s user avatar

    I found out that you get these critical health warnings when you install a plugin or a plugin Adon and fail to complete its setup to the end. So the simplest solution is to deactivate the plugin or complete the plugin set-up. My errors were caused by a Woocommerce Adon which I deactivated and when I refreshed the health status the two issues were gone. I hope this helps.

    answered Sep 11, 2022 at 13:19

    Philip Agutu's user avatar

    1

    @David M., If the issue is specifically happening with the Cross-Sell Popup Module of the ShopEngine PRO plugin, then it can be fixed by adding a small piece of code on the cross-sell-popup.php file that will read and close the session of the Cross Sale Popup module immediately.

    Big Thanks to @thống nguyễn for the solution.

    On the line 18th, from where the session starts, replace the session_start() with the following code:

    session_start([
        'read_and_close' => true
    ]);
    

    Hope it will help.

    answered May 21, 2022 at 7:35

    Prosenjit Barman's user avatar

    If you tried the above and it’s not working try to change the php version from your hosting’s CPanel
    I had the same error ande i changed the php version from 7.4 to 7.3 and it all went well

    answered Sep 16, 2022 at 18:11

    randy's user avatar

    randyrandy

    195 bronze badges

    2

    Вебмастер онлайн


    Приветствую Вас, друзья! Столкнулся с такой проблемой, плагин Yoast SEO выдавал критическую ошибку «Обнаружена активная PHP сессия»:

    Сессия PHP была создана вызовом функции session_start(). Это препятствует работе REST API и петлевых запросов. Сессия должна быть закрыта функцией session_write_close() перед выполнением любых HTTP-запросов.

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

    Нашёл какие-то рекомендации, заумные посты программистов, но решения не нашёл. Немного повозился, выявил причину и решение как исправить эту беду в моём случае на WordPress.


    Критическая ошибка session_start() в WP


    Пошаговые действия по исправлению функции session_start() на session_write_close() в WordPress

    Сначала надо выявить причину, что влияет на появление ошибки, плагины или шаблон. Первым делом проверить установленные контактные формы путём их отключения, возможно на этом ваши поиски закончатся.

    В моём случае начал проверять плагины:

    • Установил плагин «Health Check & Troubleshooting» для выявления неисправности. Он позволяет перейти в «настроечный режим» и отключать все плагины, тему, но при этом сайт будет работать для посетителей в нормальном режиме;
    • Переходите в настроечный режим и смело можно в нём работать, не опасаясь за исправную работу сайта в это время;
    • В результате манипуляций определил причину: Контактная форма «Contact Form by BestWebSoft», при его отключении проблема функции session_start() исчезала;
    • Установил «Contact Form 7», проверил: Проблемка закрыта.

    Состояние здоровья сайта


    Критическую ошибку с функцией «session_start()» может показывать не только Yoast, но и другой плагин SEO, например, All in One SEO Pack. Во время проверки откройте окно со страницей критической ошибки, по мере включений-выключений плагинов для надёжности обновляйте, чтобы не пропустить виновника.

    Как узнать тему и плагины на чужом сайте

    Вывод

    Конфигурация моего сайта видимо не уживалась с контактной формой «Contact Form by BestWebSoft», возможно у вас будет причина в других установленных или в шаблоне.

    Делитесь, какие причины выдавали вам проблему с функцией session_write_close(), удалось ли выявить и исправить проблему. Какими способами?

    Плагин от спама в комментариях и контактной форме для WP

    Мета теги: Как писать на сайте

    Желаю Удачи!

    В связи с появлением свободного времени, решил Я проверить техническое состояние своего сайта, произвести обновление различных компонентов (WordPress, PHP, MySQl, Apache и т.д) и проверить работоспособность программного обеспечения. Открыв «Здоровье сайта» если кто не знает это встроенный инструмент для диагностики состояния системы и сервера, я увидел сообщение о двух критических проблемах «Обнаружена активная PHP сессия» и «REST API выдал ошибку». Когда появились эти ошибки было не понятно, но думаю достаточно давно так как данный инструмент последний раз Я открывал наверно еще в прошлом году. Влияние этих ошибок на работоспособность сайта было совсем не значительное, так как сайт работал в штатном режиме. Но раз проблемы есть да и еще критические их хотелось решить. Поискав информацию в интернете, Я понял что в большинстве случаем причины появления этих ошибка практически одинаковые, и решение одно и тоже. Сегодня хочу поделиться своим случаем.

    WordPress как убрать критические проблемы

    И так вы обнаружили следующие критические проблемы на своем сайте.

    Обнаружена активная PHP сессия

    Сессия PHP была создана вызовом функции session_start(). Это препятствует работе REST API и петлевых запросов. Сессия должна быть закрыта функцией session_write_close() перед выполнением любых HTTP-запросов.

    REST API выдал ошибку

    REST API — один из способов коммуникации WordPress и других приложений с сервером. К примеру, экран редактора блоков использует его для отображения и сохранения ваших записей и страниц.

    Запрос к REST API неудачен из-за ошибки.

    Ошибка: cURL error 28: Operation timed out after 10001 milliseconds with 0 bytes received (http_requ

    Обнаружена активная PHP сессия

    В 99% случаев эти ошибки связаны с установленными плагинами и темами. Что нужно сделать, для начала произвести обновление, если это не поможет то по очереди отключать плагины и проверять состояние, если и это не поможет то нужно переустановить тему. Если тема доработана и переустановка приведет к потери всех изменений то можно просто поменять на стандартную.

    Wordpress Здоровье сайта

    В моем случае причиной появления ошибок «Обнаружена активная PHP сессия» и «REST API выдал ошибку» стал плагин «Капча».

    Wordpress как убрать критические проблемы

    После его отключения все критические проблемы пропали.

    REST API выдал ошибку

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

    Сеанс PHP был создан вызовом функции session_start(). Это мешает REST API и петлевым запросам. Сеанс должен быть закрыт с помощью session_write_close() перед выполнением каких-либо HTTP-запросов.

    3 ответа

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

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

    Затем в этом плагине вам нужно найти фрагмент кода, похожий на этот:

    Затем измените его на:

    Тогда все готово. В большинстве случаев это решит проблему. Удачи!

    Часто эта критическая проблема вызвана конфликтом в SESSION при использовании функции PHP session_start() . Например, я использовал плагин Calculation в WordPress, и после обновления версии WordPress возникла эта ошибка. Итак, я обнаружил плагин, который вызывает эту проблему, как активированные/деактивированные плагины один за другим.

    РЕШЕНИЕ этих ошибок: В диспетчере файлов моего сайта я получил файлы .php плагина и искал функцию session_start() . Там, где она использовалась после нее, я использовал эту функцию в строке session_write_close();

    Используем PHP-сессии в WordPress

    Сегодня я хочу рассказать, как использовать сессии PHP в WordPress . В стандартном PHP-приложении сессия начинается после вызова функции session_start , запущенной в начале PHP-скрипта . Вам нужно открыть файл header.php используемой темы и добавить туда следующий код:

    Но этот метод сложно назвать самым эффективным. WordPress предлагает API Actions , к которому можно привязывать собственные функции. В приведенном далее примере используется как раз этот метод. Добавьте следующий код в самое начало файла functions.php .

    1. Мы воспользуемся событием init , с помощью которого можно запустить PHP-сессию . При первой инициализации WordPress мы добавляем действие, которое вызывает функцию:
    1. Далее создаем функцию start_session . Обратите внимание, что функция сначала проверяет, активна ли сессия, и только потом запускает новую сессию при помощи функции session_id :

    Закрываем PHP-сессию

    Функция session_destroy позволяет очистить сессию PHP . Но когда именно вызывать эту функцию? Многое зависит от самого приложения. WordPress также предлагает несколько способов реализовать это при помощи API Actions .

    1. В WordPress может потребоваться очистить сессию при выходе пользователя из системы, либо при авторизации нового пользователя на сайте. Для вызова функции end_session() , которую мы создадим позже, будут использоваться хуки wp_logout и wp_login :
    1. Далее создаем функцию end_session :

    Принудительное закрытие сессии

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

    1. В файл functions.php нужно добавить следующий код:

    Если вы все сделали правильно, то самый верх вашего файла functions.php будет выглядеть следующим образом:

    Теперь нужно добавить глобальную переменную $_SESSION , которой можно воспользоваться в любой момент при работе с приложением. Переменная является массивом, и ниже приведен пример добавления данных в массив сессии:

    Что нужно учесть:

    Если вы занимаетесь разработкой масштабируемого сайта, то возможно вам и не придется использовать эти сессии. HTTP – это протокол без запоминания состояний, сессии PHP основываются на состояниях. Сессии хранятся на сервере и обрабатываются им же. Маршрутизация каждой сессии до нужного сервера требует более сложной конфигурации, и создает проблемы для пользователей, чьи сессии хранятся на этом сервере.

    По возможности, информацию о сессиях лучше хранить в браузере. Это позволит сэкономить ресурсы сервера, а также избавиться от ненужного функционала.

    Спасибо, что были с нами! Надеюсь, вам пригодится эта статья, и если у вас возникли вопросы, обязательно задайте их в комментариях!

    Пожалуйста, опубликуйте свои отзывы по текущей теме статьи. За комментарии, лайки, дизлайки, подписки, отклики огромное вам спасибо!

    Валентин Сейидов автор-переводчик статьи « Using PHP Sessions in WordPress »

    PHP сессии для сайта плагин WordPress

    Оптимизация сайта

    Привет! Мы продолжаем разбирать самые интересные и самые полезные плагины для сайта WordPress! Сегодня я покажу вам как добавить на свой сайт PHP сессии. Данный плагин реализует собственные обработчики сессий PHP, опираясь на базу данных WordPress. Это позволяет плагинам, темам и пользовательскому коду, безопасно использовать PHP $_SESSIONs в распределенной среде, где tempfile хранилища по умолчанию в PHP просто не будет работать.

    Установить плагин WordPress Native PHP Sessions вы сможете прямо из своей админ-панели. Перейдите на страницу: Плагины — Добавить новый , введите название плагина в форму поиска, нажмите Enter, установите и активируйте плагин.

    Native PHP Sessions for WordPress

    Далее, после установки и активации плагина, перейдите на страницу: Инструменты — Sessions . Здесь у вас будут отображаться все активные php сессии. В сессии вы можете узнать:

    Понравилась статья? Поделить с друзьями:
  • Обмолвка ошибка упущение промах
  • Обмен паспорта при обнаружении ошибки
  • Обмен ошибка при установке значения атрибута контекста
  • Обмен имеющимся опытом был очень полезен тип ошибки
  • Обмен имеющимся опытом был очень полезен лексическая ошибка