Skip to content

Symfony\Component\HttpFoundation\Request::prepareBaseUrl() is empty #34866

Closed
@mvorisek

Description

@mvorisek

Description
When webserver (file) root is more specific than the request (URL) root, the current Symfony\Component\HttpFoundation\Request::prepareBaseUrl() method

protected function prepareBaseUrl()
does not work.

This is core method and it needs to be fixed asap.

How to reproduce

$request = Request::createFromGlobals();

(\Closure::bind(function() use($request) {
    var_dump($_SERVER['SCRIPT_FILENAME']);
    var_dump($_SERVER['SCRIPT_NAME']);
    var_dump($_SERVER['PHP_SELF']);
    var_dump($this->getRequestUri()); // used in Symfony\Component\HttpFoundation\Request::prepareBaseUrl()
    var_dump($request->getBaseUrl()); // calls Symfony\Component\HttpFoundation\Request::prepareBaseUrl() on the first time
}, $request, \Symfony\Component\HttpFoundation\Request::class))();

Webserver config: serve requests with path ^/ps/*$ from C:/data/psmigr/ps_dev/ root directory

Current results

  • access from http://localhost/ps/pslrel18/adminX/
    string(65) "C:/data/psmigr/ps_dev/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(20) "/ps/pslrel18/adminX/"
    string(20) "/ps/pslrel18/adminX/"
    string(0) ""
    
  • access from http://localhost/ps/pslrel18/adminX/something
    string(65) "C:/data/psmigr/ps_dev/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/something"
    string(29) "/ps/pslrel18/adminX/something"
    string(0) ""
    
  • access from http://localhost/ps/pslrel18/adminX/index.php
    string(65) "C:/data/psmigr/ps_dev/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/index.php"
    

Notice the last var_dump in each result.

Expected results

  • access from http://localhost/ps/pslrel18/adminX/
    string(65) "C:/data/psmigr/ps_dev/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(20) "/ps/pslrel18/adminX/"
    string(20) "/ps/pslrel18/adminX/"
    string(29) "/ps/pslrel18/adminX/index.php"
    
  • access from http://localhost/ps/pslrel18/adminX/something
    string(65) "C:/data/psmigr/ps_dev/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/something"
    string(29) "/ps/pslrel18/adminX/something"
    string(29) "/ps/pslrel18/adminX/index.php"
    
  • access from http://localhost/ps/pslrel18/adminX/index.php
    string(65) "C:/data/psmigr/ps_dev/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(26) "/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/index.php"
    string(29) "/ps/pslrel18/adminX/index.php"
    

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions