Подтвердить что ты не робот

Symfony 3.1.5 Предупреждение: SessionHandler:: read(): Файл данных сеанса не создан вашим uid

Я запускаю Symfony 3.1.5 в стеке Ubuntu 14.04, PHP 7.1 и Apache 2.4.23, управляемом Vagrant 1.8.6/VirtualBox 5.1.6. Я пытаюсь использовать простой контроллер, который я сделал для отображения ответа на мой интерфейс:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\BrowserKit\Response;

class LandingController {
    /**
     * @Route("/", name="homepage")
     */
    public function showAction(){
        return new Response('This is the landing page!');
    }
}

Когда я пытаюсь получить доступ к своему интерфейсу Symfony через /app_dev.php, я вижу:

Warning: SessionHandler::read(): Session data file is not created by your uid 500 Internal Server Error - ContextErrorException

В моем журнале Apache:

CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366

В журнале Symfony dev говорится:

==> /var/www/conan/var/logs/dev.log <== [2016-10-11 14:23:04] request.INFO: Matched route "{route}". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\LandingController::showAction","_route":"homepage"},"request_uri":"http://conan.dev/app_dev.php/","method":"GET"} [] [2016-10-11 14:23:04] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException(code: 0): Warning: SessionHandler::read(): Session data file is not created by your uid at /var/www/conan/var/cache/dev/classes.php:366)"} []

Поскольку это похоже на проблему, связанную с сеансом, я ссылался на документацию Symfony для Управление сеансами. В нем указано:

Сеансы Symfony несовместимы с директивой php.ini session.auto_start = 1 Эта директива должна быть отключена в php.ini, в директивах веб-сервера или в .htaccess.

session.auto_start = 0 в моем php.ini, и файл принадлежит пользователю и группе root:

$ ls -lta /etc/php/7.1/fpm/php.ini -rw-r--r-- 1 root root 70584 Sep 30 07:29 /etc/php/7.1/fpm/php.ini

Я попытался создать .htaccess (который я разместил в своем DocumentRoot) в соответствии с инструкциями в документации Symfony, но ошибка сохраняется.

Я искал несколько тем и вопросов для решения, но ничего не приземлялся. Любые идеи, что вызывает это?

4b9b3361

Ответ 1

Редактирование config/config.yml и замена save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" на save_path: /var/lib/php/sessions исправили ошибку.

Если вы используете редактор /IDE, который автоматически преобразует пробелы в вкладки, обязательно отключите эту функцию перед сохранением изменений. Невыполнение этого требования может привести к ошибке "не содержит допустимой ошибки YAML".

Ответ 2

У меня была та же проблема. Исправление, которое сработало для меня, заключается в изменении владельца var/sessions на www-data:www-data (тот же пользователь/группа для подпроцессов php-fpm):

sudo chown -R www-data:www-data var/sessions/

Ответ 3

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

Была ли такая же проблема при использовании Vagrant (PHP-FPM 7 + Nginx) с папкой синхронизации (/vagrant ~ default)

Решено просто положить

    session:
        save_path: '/tmp'

в config_dev.yml внутри рамки.

Просто выберите место, в котором веб-сервер и PHP могут читать/писать без каких-либо проблем.

Ответ 4

Если Magento 2 генерирует это предупреждение,

Просто удалить уже существовавший сеанс внутри папки var/session и фиксированный.

Ответ 5

У меня была аналогичная проблема и очистка кеша браузера, и сохраненные данные решили проблему.

В хроме и опера вам нужно следующее:

Developer tools > Application > Clear Storage > Clear Site Data

Ответ 6

Вы используете неправильное пространство имен Response.

У вас есть use Symfony\Component\BrowserKit\Response; и должно быть use Symfony\Component\HttpFoundation\Response;