Search code examples
phppathinfo

Check in PHP if PATH_INFO is enabled on your server?


From PHP, is there a cross-platform, cross-web server way of determining if PATH_INFO is enabled on the server you are running on?

It appears $_SERVER['PATH_INFO'] is only populated if there are extra path segments after the script, so you can't reliably tell if PATH_INFO is enabled if the request is for /index.php, for example.


Solution

  • I don't think there is a defined way to get hold of an Apache configuration value like that.

    One idea that comes to mind is making a request using file_get_contents() to

    http://current_site_domain/check.php/test
    

    check.php would output $_SERVER['PATH_INFO'].

    If the result of the request is "test", PATH_INFO works.

    Of course, this might fail because opening URLs is disabled, because you don't know the local domain, because there's a firewall in place, etc. etc.

    Another way that is less prone to failing is using an iframe:

    <iframe src="/check.php/It%20works!"></iframe>
    

    If you see "it works" inside the ifrane, PATH_INFO works. Possibly useful for an installation procedure.