it-swarm.com.ru

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 для Session Management . Говорится: 

Сеансы 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, но ошибка сохраняется.

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

25
marcusnjones

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

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

49
marcusnjones

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

Sudo chown -R www-data:www-data var/sessions/
16
Takman

ИЗБЕГАЙТЕ изменить конфигурацию продукта для проблем, возникающих только в среде разработки  

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

Решил просто поставил 

    session:
        save_path: '/tmp'

onconfig_dev.ymlinsideframeworkentry

Просто выберите место, где Webserver и PHP могут читать/писать без проблем с разрешениями.

15
Marcos Regis

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

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

7
Vinith

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

На Chrome и Opera вы должны следующее:

Developer tools > Application > Clear Storage > Clear Site Data
4
Jesus Adolfo Rodriguez

В моем случае * удаление файлов cookie браузера устранило проблему . Я не выполнил ни одного шага, упомянутого выше, и попытался изменить разрешения, и все, но нет, это не было проблемой. Я столкнулся с проблемой на magento.

3
Shahzaib Hayat Khan

Я использую PIMCORE, который основан на Symfony 3. Чтобы исправить эту проблему, я только что очистил кеш браузера.

Я надеюсь, это поможет.

0
Faiyaz Alam

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

Решение состоит в том, чтобы установить ваше/var или/var/session/владение для веб-пользователя.

chown Apache: apache/var/-R * Или: chown www-data: www-data/var/-R *

Ответ с наивысшей оценкой - не самый лучший ответ здесь.

0
D Hersch

Если вы используете NFS для синхронизированной папки, то UID и GID всех файлов в ней будут UID и GID пользователя Host, на котором запущен Vagrant, и могут не совпадать с UID и GID пользователя vagrant в Гость. Например, у меня есть:

-rw-r--r--  1  501 dialout 5.1K Oct 29 15:14 Vagrantfile

501 - это UID моего пользователя на Mac, и на госте нет соответствующего пользователя. dialout - это группа гостя, которая соответствует группе staff, которая является моей основной группой на Mac.

Несмотря на то, что у вас есть права на чтение и запись всех файлов в синхронизируемой папке, когда PHP проверяет UID владельца файла сеанса, он не совпадает с тем, что пользователь PHP работает как, и блокирует доступ в качестве меры безопасности.

Вы можете использовать плагин vagrant-bindfs , чтобы обойти это:

бродячие-bindfs

Плагин Vagrant для автоматизации монтирования bindfs в ВМ. Это позволяет изменять владельца, группу и разрешения для файлов и, например, обходить проблемы с разрешениями общего ресурса NFS.

Вот что сработало для меня:

  • Запустите vagrant plugin install vagrant-bindfs
  • В вашем Vagrantfile:

    config.vm.synced_folder '.', '/vagrant', disabled: true
    config.vm.synced_folder '.', '/vagrant-nfs', type: 'nfs'
    
    config.bindfs.bind_folder '/vagrant-nfs', '/vagrant'
    
  • Запустите vagrant reload

И это работает:

-rw-r--r--  1 vagrant vagrant 5.1K Oct 29 15:45 Vagrantfile
0
Olivier 'Ölbaum' Scherler