1
resposta

Rotas no ubuntu

Boa tarde

Estou fazendo esse curso no ubuntu 22.04 e por algum motivo não consigo usar as rotas iguais ao professor.

Na rota por exemplo localhost/listar-cursos a pagina da erro 404.

Porem se eu usar localhost/index.php/listar-cursos a pagina carrega normalmente.

aqui meu index.php para consulta

<?php

use Nyholm\Psr7\Factory\Psr17Factory;
use Nyholm\Psr7Server\ServerRequestCreator;
use Psr\Container\ContainerInterface;
use Psr\Http\Server\RequestHandlerInterface;

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

ini_set('error_reporting', E_ALL);

$path = $_SERVER['PATH_INFO'] ?? '/';
$rotas = require __DIR__ . '/../config/rotas.php';

if ($path === '/') {
    header('Location: /listar-cursos');
    exit();
}

if (!isset($rotas[$path])) {
    http_response_code(404);
    exit();
}

session_start();
if (!isset($_SESSION['logado']) && stripos($path, 'login') === false) {
    $_SESSION['tipo_mensagem'] = 'danger';
    $_SESSION['mensagem_flash'] = 'Você não está logado';
    header('Location: /login');
    exit();
}

$controllerClass = $rotas[$path];

$psr17Factory = new Psr17Factory();

$creator = new ServerRequestCreator(
    $psr17Factory, // ServerRequestFactory
    $psr17Factory, // UriFactory
    $psr17Factory, // UploadedFileFactory
    $psr17Factory  // StreamFactory
);

$serverRequest = $creator->fromGlobals();

/** @var ContainerInterface $container */
$container = require __DIR__ . '/../config/dependencias.php';

/** @var RequestHandlerInterface $controllerInstance */
$controllerInstance = $container->get($controllerClass);

$response = $controllerInstance->handle($serverRequest);

foreach ($response->getHeaders() as $header => $valores) {
    foreach ($valores as $value) {
        header(sprintf('%s: %s', $header, $value), false);
    }
}
echo $response->getBody();

Alguém sabe o motivo?

Obrigado.

1 resposta

Olá Bruno, tudo bem?

Gostaria de pedir desculpas pela demora em responder o seu tópico.

Pelo código que você compartilhou, parece que o problema pode estar relacionado à configuração do seu servidor web. Você está utilizando o servidor embutido do PHP?

Fico no aguardo, bons estudos :)