Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #14566

Re: Getting the website document root portably (Apache, IIS, maybe others) and simply

From "James Harris" <james.harris.1@gmail.com>
Newsgroups comp.lang.php
Subject Re: Getting the website document root portably (Apache, IIS, maybe others) and simply
Date 2014-11-13 20:06 +0000
Organization A noiseless patient Spider
Message-ID <m432vc$slj$1@dont-email.me> (permalink)
References <m42m6j$6vd$1@dont-email.me> <cck8l8F3b8nU1@mid.individual.net> <87ppcq3nh8.fsf@ahungry.com>

Show all headers | View raw


"Matthew Carter" <m@ahungry.com> wrote in message 
news:87ppcq3nh8.fsf@ahungry.com...
> "J.O. Aho" <user@example.net> writes:
>
>> On 13/11/14 17:28, James Harris wrote:
>>> This is a question that has been asked before but there seems no 
>>> consensus
>>> in the answers given out there in internet land so I wonder if folks on 
>>> this
>>> newsgroup can recommend a currently accepted best-practice solution. 
>>> What
>>> should a PHP file do in order to find out the "document root"? I am 
>>> looking
>>> for a solution that is portable across different web servers and OSes 
>>> and is
>>> simple enough to be present verbatim on any page which needs such info.
>>
>> This depends on the webserver used, which method of how PHP is used
>> (mod_php, php-fpm, fastcgi and so on) togehter with the webserver and
>> even if you have the DOCUMENT_ROOT, it may not be pointing on the
>> directory you think it may be.
>>
>> You will simply have to figure it out for each webserver and how the
>> php is used and hope that the configuration will not be using rewrites
>> to lessen the restart of the webservise when hosting a large number of
>> sites (then you will have a DOCUMENT_ROOT which includes all the users
>> home directories) and then make cases for those options and from
>> phpinfo determine which method needs to be used.
>
> How about:
>
> $doc_root = substr (__FILE__, 0,
>                    strpos (__FILE__, $_SERVER['SCRIPT_NAME']));
>
> SCRIPT_NAME falls into the CGI spec so should be there unless you're
> using some partial implementation web server, and __FILE__ is common
> even on EOL PHP implementations.

I tried something using those two values and thought it had worked until I 
included one file in another. Unfortunately, __FILE__ is the name of the 
current file whereas the 'script name' is that of the file which originally 
did the including. So if you have A.php which includes B.php which includes 
C.php __FILE__ will be set to each name in turn as that file is parsed but 
the script name will always be A.php. I think that would make such code hard 
to place.

I had a similar thought about always using a two-level structure with, say,

  /main/*.php
  /utils/*.php

and having each include written as "../utils/X.php" etc. That works for all 
pages which are one level deep but not for the home page which is one level 
above them. It seems that if that home page includes, say, "utils/X.php" 
then if X.php tries to include another file it will try to include it be 
relative to the webroot rather than relative to webroot/utils.

James

Back to comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Getting the website document root portably (Apache, IIS, maybe others) and simply "James Harris" <james.harris.1@gmail.com> - 2014-11-13 16:28 +0000
  Re: Getting the website document root portably (Apache, IIS, maybe others) and simply "J.O. Aho" <user@example.net> - 2014-11-13 18:38 +0100
    Re: Getting the website document root portably (Apache, IIS, maybe others) and simply Matthew Carter <m@ahungry.com> - 2014-11-13 14:32 -0500
      Re: Getting the website document root portably (Apache, IIS, maybe others) and simply "Christoph M. Becker" <cmbecker69@arcor.de> - 2014-11-13 20:58 +0100
      Re: Getting the website document root portably (Apache, IIS, maybe others) and simply "James Harris" <james.harris.1@gmail.com> - 2014-11-13 20:06 +0000
    Re: Getting the website document root portably (Apache, IIS, maybe others) and simply crankypuss <crankypuss@nomail.invalid> - 2014-11-14 02:35 -0700
  Re: Getting the website document root portably (Apache, IIS, maybe others) and simply "Christoph M. Becker" <cmbecker69@arcor.de> - 2014-11-13 21:04 +0100
  Re: Getting the website document root portably (Apache, IIS, maybe others) and simply "M. Strobel" <sorry_no_mail_here@nowhere.dee> - 2014-11-13 21:53 +0100
  Re: Getting the website document root portably (Apache, IIS, maybe others) and simply Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-11-13 22:54 +0100

csiph-web