Non ho PATH_INFO in $ _SERVER

Io uso WampServer Versione 2.2 su Windows 7, Apache versione 2.2.22 e la versione di PHP 5.3.13.

Cerco di usare $this->url = $_SERVER['PATH_INFO']; nel file di Richiesta,
Ho ricevuto questo errore:

Notice: Undefined index: PATH_INFO in C:\wamp\www\site\core\Request.php linea 8

Ho provato a configurare il httpd.conf file per aggiungere AcceptPathInfo Su
PHP php.ini così ho aggiunto cgi.fix_pathinfo = 1 ma questo non è stato risolto il problema.

Come posso risolvere questo problema?

  • hai riavviare il server dopo aver aggiunto cgi.fix_pathinfo=1 ?
  • sì, ho fatto questo passaggio

 

5 Replies
  1. 6

    PATH_INFO è indefinito se non si utilizza la riscrittura degli URL (o meglio: il riferimento al tuo file PHP ‘come una directory’), vedi qui: Che cosa è esattamente PATH_INFO in PHP?

    Quindi, se si sta facendo questo: GET /foo/bar.php?query=foo poi PATH_INFO sarà indefinito.

    Se si esegue questa operazione: GET /foo/bar.php/baz?query=foo poi PATH_INFO sarà definita come /baz.

    • Sono nuovo di php mi può spiegare di più?
  2. 2

    per esempio ROOT = 'C:\wamp\www\mySite'

    può essere utile per voi per ottenere lo stesso risultato ($_SERVER['PATH_INFO']) se si utilizza questo codice:

    <?php
        class App{
            public static function get__PATH_INFO($path){
                $path_elements = explode("/", $path);
                $tempPI = "";
                if (isset($path_elements[2])){
                    for ($i = 2 ;$i < count($path_elements); $i++ )
                        $tempPI .= "/".$path_elements[$i];
                }
                return $tempPI;
            }
        }
    ?>

    quindi chiamare la funzione get__PATH_INFO() in un altro file:

    $path_info = App::get__PATH_INFO($_SERVER['REQUEST_URI']);
  3. 0

    È possibile utilizzare questo al posto di $_SERVER[‘PATH_INFO’] (è un lavoro per me)

    $_SERVER[‘PATH_INFO’] è la versione originale di ‘PATH_INFO’ prima di elaborati da PHP.

    $_SERVER['ORIG_PATH_INFO']

    O:

    $Path_Info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (isset($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : '');
  4. 0

    Solo dovuto affrontare lo stesso Problema che per localhost non c’è PATH_INFO. Ma c’è un modo per farlo funzionare utilizzando il PHP parse_url (vedi PHP: parse_url – documentazione)

    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)

    Se si utilizza questo per https://example.org/example#stuff?q=1 tornerà /example

    • Che vale la pena di notare che questo sta per tornare il nome dello script, se presente (ie. come “index.php”), quindi non può essere assunto come affidabile $_SERVER['PATH_INFO'] sostituzione.
  5. -1

    $_SERVER[‘PATH_INFO’] non è disponibile se si chiama il vostro URL http://localhost/.

    Se si carica questo script su un server e chiama con il suo nome di questa stessa variabile saranno disponibili automaticamente.

    • Io non sono d’accordo. PATH_INFO è disponibile in localhost troppo: ho fatto un quadro completo sulla parte superiore di esso, che viene eseguito in localhost come bene. Forse il tuo problema sta altrove nel vostro configurazioni o convenzioni di chiamata.

Lascia un commento