php - htaccess - Symfony 3.1.5 Advertencia: SessionHandler:: read(): el archivo de datos de sesión no es creado por su uid
symfony session path (6)
Editando config/config.yml
y reemplazando save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
con save_path: /var/lib/php/sessions
corrigió el error.
Si usa un editor / IDE que convierte espacios automáticamente en pestañas, asegúrese de desactivar esa función antes de guardar los cambios. De lo contrario, puede producirse un error "no contiene YAML válido".
Estoy ejecutando Symfony 3.1.5 en una pila Ubuntu 14.04, PHP 7.1 y Apache 2.4.23 administrada por Vagrant 1.8.6 / VirtualBox 5.1.6. Intento utilizar un controlador simple que he creado para generar una respuesta en mi interfaz:
<?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!'');
}
}
Cuando intento acceder a mi interfaz de Symfony a través de /app_dev.php
, veo:
Warning: SessionHandler::read(): Session data file is not created by your uid 500 Internal Server Error - ContextErrorException
Mi registro de Apache dice:
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
El registro de desarrollo de Symfony dice:
==> /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)"} []
Viendo que esto parece ser un problema relacionado con la sesión, me he referido a la documentación de Symfony para la Gestión de sesiones . Afirma:
Las sesiones de Symfony son incompatibles con la directiva php.ini session.auto_start = 1 Esta directiva debe estar desactivada en php.ini, en las directivas del servidor web o en .htaccess.
session.auto_start = 0
en mi php.ini
y el archivo es propiedad del usuario y del grupo 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
Intenté crear un .htaccess
(que coloqué en mi DocumentRoot
) según las instrucciones de la documentación de Symfony, pero el error persiste.
He buscado varios hilos y preguntas para encontrar una solución, pero no he encontrado nada. ¿Alguna idea de lo que está causando esto?
Está utilizando el espacio de nombres de respuesta incorrecto.
Usted tiene use Symfony/Component/BrowserKit/Response;
y debe use Symfony/Component/HttpFoundation/Response;
Yo tuve el mismo problema. La solución que funcionó para mí es cambiar el propietario de var/sessions
a www-data:www-data
(mismo usuario / grupo para los subprocesos de php-fpm):
sudo chown -R www-data:www-data var/sessions/
Tuve un problema similar y limpiar el caché de mi navegador y los datos almacenados resolvieron el problema.
En Chrome y Opera debes lo siguiente:
Developer tools > Application > Clear Storage > Clear Site Data
Si Magento 2 genera esta advertencia,
Simplemente elimine la sesión existente dentro de la carpeta var/session
y la solucione .
EVITE cambiar la configuración de los prod por problemas que solo ocurren en el entorno de desarrollo
Tuve el mismo problema al usar Vagrant (PHP-FPM 7 + Nginx) con una carpeta de sincronización (/ vagabundo ~ predeterminado)
Resuelto acaba de poner
session:
save_path: ''/tmp''
en config_dev.yml dentro de la entrada de framework
Simplemente elija algún lugar donde el servidor web y PHP puedan leer / escribir sin problemas de permisos.