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

 ID:                 60850
 Comment by:         sam dot e dot giles at googlemail dot com
 Reported by:        dave dot marshall at atstsolutions dot co dot uk
 Summary:            Built in web server does not set
                     $_SERVER['SCRIPT_FILENAME'] when using router
 Status:             Open
 Type:               Feature/Change Request
 Package:            Built-in web server
 Operating System:   Linux/Ubuntu 11.10
 PHP Version:        5.4SVN-2012-01-23 (snap)
 Block user comment: N
 Private report:     N

 New Comment:

I'm split on this issue.

On one hand for consistency I think that the $_SERVER['SCRIPT_FILENAME'] should 
be set in the router script.

On the other hand, this is meant to be a test server NOT a production server, 
and the router script should simply be used to route, or rewrite URL's to 
another script, i.e. The router script shouldn't be used in production as is.

Either way the documentation should reflect this.

However I personally, after much thought think that $_SERVER['SCRIPT_FILENAME'] 
should be set, purely for consistency, after all, it is the filename of the 
running script.


Previous Comments:
------------------------------------------------------------------------
[2012-01-24 10:15:34] dave dot marshall at atstsolutions dot co dot uk

I appreciate that, but that assumes the router will route to another script on 
disk, rather than loading the required code and generating a response like most 
of the MVC frameworks do.

------------------------------------------------------------------------
[2012-01-24 02:56:18] larue...@php.net

router is a especially script, if we set this as the script_name, what about 
the 
script which router routed to?

------------------------------------------------------------------------
[2012-01-23 13:45:31] dave dot marshall at atstsolutions dot co dot uk

Description:
------------
Nothing special done when compiling, just --configure and then make.

If the webserver couldn't do any path translation, $_SERVER['SCRIPT_FILENAME'] 
is not populated. If this is desired behaviour, perhaps the documentation 
should be updated, as existing software will rely on it.

----

Given the code below in router.php, and starting the web server with a router
> ~/Downloads/php5.4-201201231230/sapi/cli/php -S localhost:8000 router.php

Fetch the root url, NULL returned

> curl localhost:8000
NULL

Given that this variable is documented, I'd expect it to be string(29) 
"/home/davem/temp_ws/router.php"

Touching a file called index.php, seems to trick the webserver in to thinking 
it's done a path translation for the root url

> touch index.php
> curl localhost:8000
string(29) "/home/davem/temp_ws/index.php"



Test script:
---------------
router.php

<?php
var_dump($_SERVER['SCRIPT_FILENAME']);
return true;



Expected result:
----------------
string(29) "/home/davem/temp_ws/router.php"

Actual result:
--------------
NULL


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



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

Reply via email to