1
resposta

session_start(): Failed to read session data

Não estou conseguindo encontrar uma solução...

[Mon Jun 27 00:12:18 2022] [::1]:53167 Accepted
[Mon Jun 27 00:12:18 2022] PHP Warning:  session_start(): open(C:/Windows/tmp\sess_l97omoo6r1tgmmor47fupbqp4e, O_RDWR) failed: No such file or directory (2) in C:\Repository\MVC\public\index.php on line 21
[Mon Jun 27 00:12:18 2022] PHP Warning:  session_start(): Failed to read session data: files (path: C:/Windows/tmp) in C:\Repository\MVC\public\index.php on line 21
[Mon Jun 27 00:12:18 2022] [::1]:53167 [200]: GET /listar-cursos
[Mon Jun 27 00:12:18 2022] [::1]:53167 Closing
[Mon Jun 27 00:12:18 2022] [::1]:53168 Accepted
[Mon Jun 27 00:12:18 2022] [::1]:53168 [404]: GET /favicon.ico - No such file or directory
[Mon Jun 27 00:12:18 2022] [::1]:53168 Closing

Código da classe RealizarLogin:

<?php

namespace Alura\Cursos\Controller;

use Alura\Cursos\Entity\Usuario;
use Alura\Cursos\Infra\EntityManagerCreator;

class RealizarLogin implements InterfaceControladorRequisicao
{
    /**
     * @var \Doctrine\ORM\EntityRepository
     */
    private $repositorioDeUsuarios;

    public function __construct()
    {
        $entityManager = (new EntityManagerCreator())->getEntityManager();
        $this->repositorioDeUsuarios = $entityManager->getRepository(Usuario::class);
    }

    public function processaRequisicao(): void
    {
        $email = filter_input(INPUT_POST,
            'email',
            FILTER_VALIDATE_EMAIL
        );

        if (is_null($email) || $email === false) {
            echo "O e-mail digitado não é um e-mail válido";
            exit();
        }

        $senha = filter_input(INPUT_POST,
            'senha',
            FILTER_SANITIZE_STRING);

        /** @var  $usuario */
        $usuario = $this->repositorioDeUsuarios->findOneBy(['email' => $email]);

        if (is_null($usuario) || !$usuario->senhaEstaCorreta($senha)) {
            echo "E-mail ou senha inválidos";
            return;
        }
        $_SESSION['logado'] = true;

        header('Location: /listar-cursos');
    }
}

Código do ponto único da aplicação (arquivo index.php)

<?php

require __DIR__ . '/../vendor/autoload.php';

use Alura\Cursos\Controller\{
    RealizarLogin,
    FormularioEdicao,
    Exclusao,
    FormularioInsercao,
    ListarCursos,
    Persistencia};

$caminho = $_SERVER['PATH_INFO'];
$rotas = require __DIR__ . '/../config/routes.php';

if (!array_key_exists($caminho, $rotas)) {
    http_response_code(404);
    exit();
}

session_start();

$classeControladora = $rotas[$caminho];
/** @var   $controlador */
$controlador = new $classeControladora();
$controlador->processaRequisicao();
1 resposta

Olá, Tales. Parece que a execução do seu PHP não está com permissões a essa pasta onde está tentando salvar os dados de sessão. Em algum momento você executou o código na linha de comando como administrador?

De qualquer forma, apagar essa pasta (C:/Windows/tmp\sess_l97omoo6r1tgmmor47fupbqp4e) e reiniciar o servidor web deve resolver.