Re: differences in between these env. variables
| From: | Matijn Woudt | Date: | Wed, 11 Jan 2012 23:49:56 +0000 |
| Subject: | Re: differences in between these env. variables | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-316259@lists.php.net to get a copy of this message | ||
On Thu, Jan 12, 2012 at 12:26 AM, Haluk Karamete
<halukkaramete@gmail.com> wrote:
> I've grouped these env variables, each group returns the same values
> is there a difference? which ones do you use? which ones should I not
> use for the purposes listed below
>
You can find the answers here:
http://nl3.php.net/manual/en/reserved.variables.server.php
I'll try to answer them in short
> group1
> SCRIPT_FILENAME vs PATH_TRANSLATED
> where both return D:\Hosting\5291100\html\directory\file.php
> purpose: get the full file path to the php script
>
SCRIPT_FILENAME can be a relative path, PATH_TRANSLATED is the full
path. This is only true if run from CLI.
On my Ubuntu box I don't even have PATH_TRANSLATED, so SCRIPT_FILENAME
is recommended.
>
> group2
> REMOTE_ADDR vs REMOTE_HOST
> where both return same IP
> purpose: get the visitor's ip
REMOTE_HOST is not necessary always IP, if PHP succeeds to do a
reverse lookup (ie. get name for this ip), than REMOTE_HOST contains a
name instead of ip. You need to set a config option for this, though.
Recommended: REMOTE_ADDR, it matches what you need, doesn't need
config, and REMOTE_HOST doesn't even work for all hosts.
>
> group3
> REQUEST_URI vs SCRIPT_NAME vs URL vs ORIG_PATH_INFO vs PHP_SELF
> which all return /directory/file.php
> purpose: get the virtual url to the php script
I'll extend your example. We now have a RewriteRule in apache like this:
RewriteRule ^files/?$ /directory/file.php [L,QSA]
Which will rewrite /files/... --> /directory/file.php
REQUEST_URI now contains how it was called by the browser,
'/files/something.php'
SCRIPT_NAME returns path to script (/directory/file.php), set by the
SAPI (apache, ..).
PHP_SELF returns also the path to script (/directory/file.php), but
set by PHP self.
I don't have any ORIG_PATH_INFO on my Ubuntu box, so be careful about this one.
Recommended: Depends on which you need. I prefer PHP_SELF over
SCRIPT_NAME, but that's more personal choice.
Matijn