Я запускаю 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, но ошибка сохраняется.
Я искал несколько тем и вопросов для решения, но ничего не приземлялся. Любые идеи, что вызывает это?
Редактирование config/config.yml
и замена save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
с save_path: /var/lib/php/sessions
исправили ошибку.
Если вы используете редактор / IDE, который автоматически преобразует пробелы в закладки, обязательно отключите эту функцию перед сохранением изменений. Невыполнение этого требования может привести к ошибке «не содержит допустимой ошибки YAML».
У меня такая же проблема. Исправление, которое сработало для меня, заключается в изменении владельца var/sessions
на www-data:www-data
(тот же пользователь / группа для подпроцессов php-fpm):
sudo chown -R www-data:www-data var/sessions/
ИЗБЕГАЙТЕ изменить конфигурацию prod для проблем, которые возникают только в среде разработки
Имела ту же проблему при использовании Vagrant (PHP-FPM 7 + Nginx) с папкой синхронизации (/ vagrant ~ default)
Решено только что положить
session: save_path: '/tmp'
on config_dev.yml внутри фреймворка
Просто выберите место, которое Webserver и PHP могут читать и писать без разрешения.
Если Magento 2 генерирует это предупреждение,
Просто удалите уже существующий сеанс внутри папки var/session
и его исправлено .
У меня была аналогичная проблема и очистка кеша моего браузера, и сохраненные данные решили проблему.
В хроме и опера вы должны:
Developer tools > Application > Clear Storage > Clear Site Data
Вы используете неправильное пространство имен Response.
Вы use Symfony\Component\BrowserKit\Response;
и должен use Symfony\Component\HttpFoundation\Response;