Re: Odd PHP question

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
+ (text/plain)
Delete this message
Reply to this message
Author: John Seth
Date:  
To: Main PLUG discussion list
Subject: Re: Odd PHP question
Yes, the only place that "DocumentRoot" is allowed by Apache to be
specified is within the global perspective, or within the <VirtualHost>
directive's. (http://httpd.apache.org/). Global variables like
PHP_SELF and DOCUMENT_ROOT are taken directly from the server environment.

I'm not really sure what to suggest here that would work for you,
though, as a matter of minor opinion I'd suggest finding a host that
doesn't make you mess with .htaccess files for subdomains. Most hosts I
know of, have some sort of web based control panel using Webmin, CPanel,
Plesk or a custom made one.

You might be able to create an include file you can include() into any
files you use, which would have your own 'document root' variable of
sorts ($DOC_ROOT = $_SERVER['DOCUMENT_ROOT']."/subdir/";) and/or modify
the output of PHP_SELF ($DOC_SELF = $_SERVER['PHP_SELF'];
trim("something", $DOCSELF);) I'm basically pulling at straws though.
If you are interested in modifying PHP variables and code, I'd suggest
looking at PHP's website and/or other forums or mailing lists better
suited to PHP.

Hope that helps some...

- Tony




Kurt Granroth wrote:
> The more I research this, the more it looks like I would have to reset
> the DocumentRoot dynamically... and so far, that doesn't seem
> possible. I've tried the following all of the following directives in
> my .htaccess file (one at a time):
>
> php_value doc_root /var/www/domain.com/sub
> php_value user_dir domain.com/sub
> DocumentRoot /var/www/domain.com/sub
> <Directory /var/www/domain.com/sub>
> DocumentRoot /var/www/domain.com/sub
> </Directory>
> <Location />
> DocumentRoot /var/www/domain.com/sub
> </Location>
> <IfModule mod_userdir.c>
> UserDir domain.com/sub
> </IfModule>
>
> The PHP ones are ignored. All the rest give Internal Server errors.
> It seems that PHP used to allow setting doc_root and user_dir in
> .htaccess but that was a bug and was fixed years ago. Alas.
>
> It's looking like the only way to set the DocumentRoot or UserDir is
> to do so in the system level httpd.conf. Am I missing anything, here?
>
> On Jan 15, 2006, at 8:07 PM, John Seth wrote:
>
>> If I am writing my own code correctly, $_SERVER['PHP_SELF'] should
>> return the full path of the script and filename from the document
>> root of the website. If your host has your subdomain set up right,
>> you should be able to issue: "echo
>> $_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']" in a php script and
>> have it return the complete path of the file via the filesystem...
>> take out the "DOCUMENT_ROOT" and you should be left with the path the
>> webserver uses to the script. The above example is what I use to
>> include files not in the same directory, minus the php_self obviously.
>>
>> However, in cases where I submit a form back onto itself I use
>> $_SERVER['PHP_SELF'] all the time. Hence my questioning if you know
>> what the server is using for DOCUMENT_ROOT. If it thinks the
>> document root is "/var/www/domain.com/" and the PHP_SELF refers to
>> "/sub/form.php", then php_self will not return what you expect, nor
>> want it to.
>>
>> I would suggest taking a look at:
>> http://us3.php.net/reserved.variables for more help.
>>
>> Hope that helps,
>>
>>
>>    Tony

>>
>>
>>
>>
>> Kurt Granroth wrote:
>>> Actually, I should have specified that the PHP scripts are all 3rd
>>> party ones. If they are scripts that I wrote, then there are always
>>> ways around it. But the 3rd party ones invariably do 'dirname' on
>>> PHP_SELF (or something very similar). That's why I want to know a
>>> way around that at a higher-level. Maybe some php.ini setting or
>>> somesuch.
>>>
>>> On Jan 15, 2006, at 5:07 PM, wrote:
>>>
>>>> Try a test script like this : 'var_dump($_SERVER);'. This will
>>>> show you all the
>>>> variables provided by the web server (like DOCUMENT_ROOT, PHP_SELF,
>>>> etc.) There
>>>> may be one which has what you want. Maybe PATH_TRANSLATED?
>>>>
>>>> alex
>>>>
>>>> Quoting Kurt Granroth <>:
>>>>
>>>>> This isn't directly Linux related but since I know there are a lot of
>>>>> PHP folks on this list, I thought I'd ask here.
>>>>>
>>>>> I have multiple domain and multiple subdomain support with my web
>>>>> hosting enabled mostly by using mod_rewrite. The end result is that
>>>>> I can define my domains and subdomains by just creating the proper
>>>>> directory structure.
>>>>>
>>>>> For instance, say I have "sub.domain.com", "other.domain.com", and
>>>>> "cool.com". I would simply create following directory structure:
>>>>>
>>>>> $DOCUMENT_ROOT/domain.com/sub/
>>>>> $DOCUMENT_ROOT/domain.com/other/
>>>>> $DOCUMENT_ROOT/cool.com/
>>>>>
>>>>> So far, so good. That all works just as expected. Now say, though,
>>>>> that I have a PHP file 'index.php' in the directory 'domain.com/sub'
>>>>> that looks like so:
>>>>>
>>>>> <?php echo $_SERVER["PHP_SELF"] ?>
>>>>>
>>>>> I then execute the script using "http://sub.domain.com/index.php".
>>>>> The result:
>>>>>
>>>>> /domain.com/sub/index.php
>>>>>
>>>>> This is technically accurate... but not at all what I want. Why?
>>>>> Because typically, PHP code uses the dirname() of this to find other
>>>>> relative scripts. If you do that, though, then the constructed URL
>>>>> will look like so:
>>>>>
>>>>> http://sub.domain.com/domain.com/sub/someother.php
>>>>>
>>>>> instead of
>>>>>
>>>>> http://sub.domain.com/someother.php
>>>>>
>>>>> So it seems that I somehow have to "fool" PHP into thinking that
>>>>> PHP_SELF (and SCRIPT_NAME and SCRIPT_FILENAME) is "/index.php"
>>>>> instead of "/domain.com/sub/index.php"
>>>>>
>>>>> Is that even possible? If so, how. If not, is there any way around
>>>>> this at all?
>>>>>
>>>>> Thanks!
>>>>> Kurt
>>>>> ---------------------------------------------------
>>>>> PLUG-discuss mailing list -
>>>>> To subscribe, unsubscribe, or to change you mail settings:
>>>>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------
>>>> PLUG-discuss mailing list -
>>>> To subscribe, unsubscribe, or to change you mail settings:
>>>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>>>>
>>>>
>>>
>>> ---------------------------------------------------
>>> PLUG-discuss mailing list -
>>> To subscribe, unsubscribe, or to change you mail settings:
>>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>> ---------------------------------------------------
>> PLUG-discuss mailing list -
>> To subscribe, unsubscribe, or to change you mail settings:
>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>
> ---------------------------------------------------
> PLUG-discuss mailing list -
> To subscribe, unsubscribe, or to change you mail settings:
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss

---------------------------------------------------
PLUG-discuss mailing list -
To subscribe, unsubscribe, or to change you mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss