Req #81670 [Asn]: Access log contains wrong values for "%r" (request URI) format string

From: Date: Mon, 29 Nov 2021 20:53:39 +0000
Subject: Req #81670 [Asn]: Access log contains wrong values for "%r" (request URI) format string
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238045@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81670&edit=1

 ID:                 81670
 Updated by:         bukka@php.net
 Reported by:        amenshchikov at gmail dot com
 Summary:            Access log contains wrong values for "%r" (request
                     URI) format string
 Status:             Assigned
 Type:               Feature/Change Request
 Package:            FPM related
 Operating System:   Debian 11
 PHP Version:        8.1.0
 Assigned To:        bukka
 Block user comment: N
 Private report:     N

 New Comment:

What I meant that we should update documentation to state that "%r" is for SCRIPT_NAME
rather than for REQUEST_URI fcgi env. We cannot just change the value as it could potentially break
some scripts that already depend on it being a SCRIPT_NAME. The thing is that internally script name
is taken as request uri so I don't think REQUEST_URI is used for anything but might have missed
something.

In your case it doesn't really matter that much because if we just changed it to REQUEST_URI
than it would contain a query so I guess it wouldn't help you. I guess specific flag for path
info might help as it might not be always reliable to get it from env (at least the logic around
that doesn't seem that straight forward as there are some hacks around Apache). You might
actually give it a try and see if "%{PATH_INFO}e" or "%{ORIG_PATH_INFO}e" works
for you?


Previous Comments:
------------------------------------------------------------------------
[2021-11-28 20:06:02] ameshchikov at gmail dot com

Yes, you are right.

And honestly, I don't think that there is a documentation issue.
As I can see, access.format has dedicated placeholder "%f" for script_filename and it
seems strange to use "%r" just for script_name (without full path to that script). It
seems like "%r" intended to contain certainly request URI (or path info).

------------------------------------------------------------------------
[2021-11-28 19:52:07] bukka@php.net

I assume that you really want to be able to log path info, right?

------------------------------------------------------------------------
[2021-11-28 19:32:02] bukka@php.net

FPM takes request URI from the SCRIPT_NAME. I guess this is more a documentation issue (more
description in docs maybe) / feature request so I will change this to feature request as we
can't just change it at this stage anyway.

------------------------------------------------------------------------
[2021-11-28 18:55:03] amenshchikov at gmail dot com

Description:
------------
Instead of real request URI (without query string), that contained in REQUEST_URI env variable,
"%r" outputs SCRIPT_NAME value into access log.

In case I need request URI with query string, I can use "%{REQUEST_URI}e" and there is no
problem. But when I need request URI without query string (as it intended with "%r") I
don't know what to do.



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



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


Thread (10 messages)

« previous php.bugs (#238045) next »