Bug #74205 [Opn]: PATH_INFO only partial support

From: Date: Thu, 26 Oct 2017 12:25:26 +0000
Subject: Bug #74205 [Opn]: PATH_INFO only partial support
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-212327@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=74205&edit=1

 ID:                 74205
 Updated by:         cmb@php.net
 Reported by:        remi@php.net
 Summary:            PATH_INFO only partial support
 Status:             Open
 Type:               Bug
 Package:            Built-in web server
 Operating System:   irrevelant
 PHP Version:        Next Minor Version
 Block user comment: N
 Private report:     N

 New Comment:

> If neither file exists, the lookup for index.php and index.html
> will be continued in the parent directory […]

It seems to me that this lookup must not occur (respectively,
stop), if the specified (or any intermediate) resource exists.
Say, there is the following structure:

  /foo/ 
  /index.php

Requesting /foo should respond with 404 (or show the directory
listing); requesting /bar should be interpreted as /index.php/bar,
i.e. serving /index.php with /bar as PATH_INFO.


Previous Comments:
------------------------------------------------------------------------
[2017-03-04 17:20:10] remi@php.net

Yes, also fix 74061

------------------------------------------------------------------------
[2017-03-04 17:14:32] requinix@php.net

Would the PR also fix bug #74061?

------------------------------------------------------------------------
[2017-03-04 17:12:43] remi@php.net

See https://github.com/php/php-src/pull/2403

------------------------------------------------------------------------
[2017-03-04 17:09:13] remi@php.net

Description:
------------
According to documentation http://php.net/manual/en/features.commandline.webserver.php

"URI requests are served from the current working directory where PHP was started, unless the
-t option is used to specify an explicit document root. If a URI request does not specify a file,
then either index.php or index.html in the given directory are returned. If neither file exists, the
lookup for index.php and index.html will be continued in the parent directory and so on until one is
found or the document root has been reached. If an index.php or index.html is found, it is returned
and $_SERVER['PATH_INFO'] is set to the trailing part of the URI. Otherwise a 404 response
code is returned."

So we can understand this as the apache rewirte equiv to

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

But as soon as the URI contain a dot, this doesn't work.

Also see http://discourse.slimframework.com/t/path-issue-404-on-some-routes-using-php-builtin-webserver/1193


Test script:
---------------
With a tree containif only a index.php

wget  -q http://localhost:8888/foo/bar
wget  -q http://localhost:8888/foo-1.1/bar
wget  -q http://localhost:8888/foo/bar.png


Expected result:
----------------
PHP 7.2.0-dev Development Server started at Sat Mar  4 18:07:49 2017
Listening on http://localhost:8888
Document root is /work/build/phpmaster
Press Ctrl-C to quit.
[Sat Mar  4 17:56:34 2017] 127.0.0.1:39094 [200]: /foo/bar
[Sat Mar  4 17:56:42 2017] 127.0.0.1:39096 [200]: /foo-1.1/bar
[Sat Mar  4 17:56:46 2017] 127.0.0.1:39104 [200]: /foo/bar.png


Actual result:
--------------
PHP 7.2.0-dev Development Server started at Sat Mar  4 18:07:49 2017
Listening on http://localhost:8888
Document root is /work/build/phpmaster
Press Ctrl-C to quit.
[Sat Mar  4 18:07:53 2017] 127.0.0.1:39402 [200]: /foo/bar
[Sat Mar  4 18:07:57 2017] 127.0.0.1:39404 [404]: /foo-1.1/bar - No such file or directory
[Sat Mar  4 18:08:01 2017] 127.0.0.1:39412 [404]: /foo/bar.png - No such file or directory



------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=74205&edit=1


Thread (6 messages)

« previous php.bugs (#212327) next »