On Thu, 2008-10-23 at 09:46 -0400, Seth Foss wrote:
> Jim Lucas wrote:
> > Seth Foss wrote:
> >   
> >> Jim Lucas wrote:
> >>     
> >>> Seth Foss wrote:
> >>>  
> >>>       
> >>>> Hi everyone,
> >>>>
> >>>> I am trying to run multiple sites on the same server, that have mostly
> >>>> identical code - a pre-built application.
> >>>>
> >>>> Anyway, I would like to save  disk space by specifying independent
> >>>> configuration files for each site, then using symbolic links to access
> >>>> the rest of the code for the application.
> >>>>
> >>>> I have managed to configure apache so one such directory is accessed via
> >>>> a symlink, which is ok. However, a file within the linked directory
> >>>> attempts to include the configuration file (../config.php) from the
> >>>> actual parent directory instead of the directory containing the symlink.
> >>>>
> >>>> Is there any way to configure apache or php to trace back the symlink
> >>>> when using '..', or can that only go one direction?
> >>>>
> >>>> Thanks,
> >>>> Seth
> >>>>
> >>>>     
> >>>>         
> >>> You can set the include path for your code to include the parent
> >>> directory
> >>> from where the symlink is and then remove the ../ part of the call.
> >>>
> >>>   
> >>>       
> >> Jim,
> >>
> >> I had considered that, but I plan to have multiple directories following
> >> symlinks to the same place.
> >>
> >> For example,
> >>
> >> /var/www/site1 has a config.php and a symlink to var/www/universal/app
> >> while
> >> /var/www/site2 has a different config.php and a symlink to
> >> var/www/universal/app
> >>
> >> var/www/universal/app has an index.php with include(../config.php) that
> >> needs the config from the site that is using it (i.e., sometimes site1,
> >> sometimes site2)
> >>
> >> Does that make sense? Or did I misunderstand your suggestion?
> >>
> >> Thanks,
> >> Seth
> >>
> >>
> >>     
> >
> > You might have miss understood me.
> >
> > In your VHOST entries, make an entry on each domain
> >
> > <VirtualHost X.X.X.X>
> >     DocumentRoot /path/to/example.com/public_html
> >     ServerName example.com
> >     php_value include_path '/path/to/example.com/public_html
> > </VirtualHost>
> >
> >
> > Now you have your app symlinked into the public_html dir as such (guessing 
> > here)
> >
> > ln -s /path/to/my/app /path/to/example.com/public_html/app
> >
> > Now, in the app directory you have index.php that has include 
> > '../config.php';
> >
> > Your problem is that the ../config.php reference refers to
> >     /path/to/my/app/../config.php == /path/to/my/
> > instead of
> >     /path/to/example.com/public_html/app/../config.php
> >
> > Correct???
> >
> > This is because it is being referenced logically from
> >     /path/to/my/app/index.php
> >
> > any symbolically from
> >     /path/to/example.com/public_html/app/index.php
> >
> > If that is the case, add the vHOST entry that I talked about above, then
> > reference the config file as include 'config.php';  and it will then look in
> > the include_path location(s) for the files and not think of referencing the
> > current directory that it is in.
> >
> > Mind you that you can also enter this information into a .htaccess that is
> > located in the /path/to/example.com/public_html/ directory.  As long as
> > .htaccess files are allowed.
> >
> > I usually have my include_path set to ".:/path/to/example.com/public_html/" 
> > in
> > my vhosts entry for each domain.
> >
> > Hope this helps
> >   
> I did misunderstand. This approach is working for me. Unfortunately, as 
> I am implementing it, it seems there are more files than I expected that 
> utilize a series of '..'s instead of the absolute path from the config 
> file, and more files than I expected that include the config file 
> themselves.
> 
> However, these would cause me the same headaches with any of the 
> proposed solutions.
> 
> Long story short, problem is solved. Setting the include path in VHOST 
> lets me set it uniquely for each site, and then including config.php 
> directly (no ..) uses that include path to grab the appropriate config file.
> 
> Thanks to everyone for your help, and especially you, Jim, for your 
> elegant solution.

You could probably set a value in the vhost that makes the absolute path
to the web root available to your script. Personally, I hate to rely on
anything magical like non-standard include paths :)

Cheers,
Rob.
-- 
http://www.interjinn.com
Application and Templating Framework for PHP


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to