php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #67998 Wrong SCRIPT_FILENAME
Submitted: 2014-09-10 14:15 UTC Modified: 2023-04-07 11:40 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:0 (0.0%)
From: php-fpm1 at gmail dot com Assigned: bukka (profile)
Status: Not a bug Package: FPM related
PHP Version: 5.4.32 OS: CentOS6
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: php-fpm1 at gmail dot com
New email:
PHP Version: OS:

 

 [2014-09-10 14:15 UTC] php-fpm1 at gmail dot com
Description:
------------
Wrong SCIPRT_FILENAME is given. It contains '/' twice at the start of it (//).

["SCRIPT_FILENAME"]=> string(57) "//home/admin/domains/testing.domain.tld/public_html/test.php" 

Other variables are okay:
["CONTEXT_DOCUMENT_ROOT"]=> string(47) "/home/admin/domains/testing.domain.tld/public_html"
["DOCUMENT_ROOT"]=> string(47) "/home/admin/domains/testing.domain.tld/public_html"
["REQUEST_URI"]=> string(9) "/test.php" 
["SCRIPT_NAME"]=> string(9) "/test.php" 
["PHP_SELF"]=> string(9) "/test.php" 
["HOME"]=> string(11) "/home/admin"

It also breaks SG(request_info).path_translated in extensions.

Test script:
---------------
<?php
echo $_SERVER;
?>

Expected result:
----------------
["SCRIPT_FILENAME"]=> string(57) "/home/admin/domains/testing.domain.tld/public_html/test.php" 

Actual result:
--------------
["SCRIPT_FILENAME"]=> string(57) "//home/admin/domains/testing.domain.tld/public_html/test.php" 

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2014-09-10 14:22 UTC] phpfpm1 at gmail dot com
I forgot to mention that the bug affects PHP 5.4.33RC1 too, so https://bugs.php.net/bug.php?id=67541 doesn't fix it.
 [2014-09-10 15:50 UTC] phpfpm1 at gmail dot com
BTW, PHP-FPM is setup using unix domain sockets in Apache.

AddHandler "proxy:unix:/usr/local/php54/sockets/admin.sock|fcgi://localhost/" .inc .php .phtml .php54

More info: http://httpd.apache.org/docs/current/mod/mod_proxy.html#handler

I've found that the following fixes the problem (removing "/" from the end of "localhost"):
AddHandler "proxy:unix:/usr/local/php54/sockets/admin.sock|fcgi://localhost" .inc .php .phtml .php54

But official Apache documentation states that "/" ending should be there.
 [2014-09-11 05:33 UTC] dz at heroku dot com
The docs are wrong. Don't add a trailing slash. The request URI is appended to whatever you provide in SetHandler.

The use of UDS may also further confuse things as PHP doesn't handle that.
 [2023-04-07 11:40 UTC] bukka@php.net
-Status: Open +Status: Not a bug -Assigned To: +Assigned To: bukka
 [2023-04-07 11:40 UTC] bukka@php.net
I just did a little bit of debugging and this is what Apache sends as SCRIPT_FILENAME if the trailing slash is supplied:

proxy:fcgi://localhost//home/jakub/prog/php/tests/fpm/fcgi-envs/index.php

if my Apache config is

SetHandler "proxy:unix:/home/jakub/prog/php/tests/fpm/fcgi-envs/fpm.sock|fcgi://localhost/"


It should not be really a problem functionality wise on Linux as multiple slashes are equivalent to a single one. But to have variable as expected the solution is to really set it without trailing slash in Apache config. If anything it is a bug in the Apache docs or maybe in its code (looks more docs issue to me). Nothing should be done about it in FPM though.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 14 08:01:27 2024 UTC