Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

PHP Notice: Undefined index: PATH_INFO

<?php

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

$caminho = $_SERVER['PATH_INFO'];

if (file_exists(__DIR__ . '/' . $caminho)) {
    return false;
}

$rotas = require __DIR__ . '/config/routes.php';

if (!array_key_exists($caminho, $rotas)) {
    echo "Erro 404";
    exit();
}

session_start();

$ehRotaDeLogin = stripos($caminho, 'login');
if (!isset($_SESSION['usuario']) and $ehRotaDeLogin === false) {
    header('Location: /login');
    exit;
}

$classeControladora = $rotas[$caminho];
$controller = new $classeControladora();
$controller->request();

Ola amigo estou subindo uma versao do seu projeto para a digital ocean...onde faco meus teste, e esta dando esse erro.

PHP Notice: Undefined index: PATH_INFO in /var/www/html/index.php on line 5.

voce poderia me ajudar?

coloquei dentro de uma pasta dentro da pasta html...ele dava o mesmo erro entao testei os arquivos todos direto na pasta html e continua com o mesmo erro.

8 respostas

fico no aguardo

Rodrigo, boa tarde!

Você está executando o arquivo via web? Caso esteja rodando no terminal, esse variável não será criada, caso esteja. coloque antes declarar a variável $caminho o comando abaixo:

echo "<pre>";
print_r($_SERVER);

E coloque aqui o resultado para que possamos analisar, adicionar o link do github facilita para que possamos testar!

Espero ter ajudado e bons estudos!

[USER] => www-data
    [HOME] => /var/www
    [HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    [HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_CONNECTION] => keep-alive
    [HTTP_HOST] => 157.245.122.22
    [REDIRECT_STATUS] => 200
    [SERVER_NAME] => portal
    [SERVER_PORT] => 80
    [SERVER_ADDR] => 157.245.122.22
    [REMOTE_PORT] => 59190
    [REMOTE_ADDR] => 45.171.78.164
    [SERVER_SOFTWARE] => nginx/1.14.0
    [GATEWAY_INTERFACE] => CGI/1.1
    [REQUEST_SCHEME] => http
    [SERVER_PROTOCOL] => HTTP/1.1
    [DOCUMENT_ROOT] => /var/www/html
    [DOCUMENT_URI] => /index.php
    [REQUEST_URI] => /
    [SCRIPT_NAME] => /index.php
    [CONTENT_LENGTH] => 
    [CONTENT_TYPE] => 
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [SCRIPT_FILENAME] => /var/www/html/index.php
    [PATH_INFO] => 
    [FCGI_ROLE] => RESPONDER
    [PHP_SELF] => /index.php
    [REQUEST_TIME_FLOAT] => 1569887658.278
    [REQUEST_TIME] => 1569887658

esse e o git https://github.com/rodrigo-labs/portal-gordo

Fala Rodrigo.

Você pode definir sua variável $caminho assim:

$caminho = $_SERVER['PATH_INFO'] ?? '/';

Dessa forma se você acessar a raiz, o caminho será /.

Forte abraço e bons estudos.

Ola Vinicius, esse de cima e no meu server local esse aqui e o de testes na digital ocean.

Array
(
    [USER] => www-data
    [HOME] => /var/www
    [HTTP_COOKIE] => PHPSESSID=hdorju7p0j6ev4hrb9acdjjou4
    [HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    [HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_CONNECTION] => keep-alive
    [HTTP_HOST] => 157.245.122.22
    [SCRIPT_FILENAME] => /var/www/html/portal/index.php
    [REDIRECT_STATUS] => 200
    [SERVER_NAME] => portal
    [SERVER_PORT] => 80
    [SERVER_ADDR] => 157.245.122.22
    [REMOTE_PORT] => 59628
    [REMOTE_ADDR] => 45.171.78.164
    [SERVER_SOFTWARE] => nginx/1.14.0
    [GATEWAY_INTERFACE] => CGI/1.1
    [REQUEST_SCHEME] => http
    [SERVER_PROTOCOL] => HTTP/1.1
    [DOCUMENT_ROOT] => /var/www/html/portal
    [DOCUMENT_URI] => /index.php
    [REQUEST_URI] => /login/entra
    [SCRIPT_NAME] => /index.php
    [CONTENT_LENGTH] => 
    [CONTENT_TYPE] => 
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [FCGI_ROLE] => RESPONDER
    [PHP_SELF] => /index.php
    [REQUEST_TIME_FLOAT] => 1569893447.6741
    [REQUEST_TIME] => 1569893447
)

pensei em usar o REQUEST_URI.

solução!

O REQUEST_URI contém a query string também. Isso pode ser um problema dependendo da abordagem.

;-)

Ola novamente Vinicius, cara eu instalei no server o phpmyadmin...e agora ele tambem nao deixa eu acessar ele pela rota /phpmyadmin

Alguma ideia?

Fala, Rodrigo. Neste treinamento a gente não fala de phpmyadmin...

Acho mais interessante você abrir uma nova dúvida relatando seu problema completo.