Michael A. Peters wrote:
> PJ wrote:
>> Michael A. Peters wrote:
>>> PJ wrote:
>>>> I hope I'm not out of place here, but I have a problem that seems
>>>> to be
>>>> related.
>>>> I am using some include statements for page headers with the pages in
>>>> various directories on the site. The problem is this... if I put
>>>> relative statements in the page (header.php) like
>>>> ../images/file.jpg and
>>>> ../file.php etc, if the page into which I include header.php is not in
>>>> the top level directory, the links do not work and I have to copy
>>>> header.php to header1.php and change the references to /images
>>>> otherwise
>>>> images are not displayed and links to not work in href.
>>>> e.g.:
>>>> 1.  top level file books.php
>>>> include ("lib/db1.php");    // Connect to database
>>>> include ("header1.php");
>>>> 2. subdirectory: /authors/a.php
>>>> include "../header.php";
>>>> I thought that using referencing the top level of the directory tree
>>>> (../) would work form anywhere within the tree?
>>>> Am I the victim of my own misconceptions here?
>>>> TIA to set me straight.
>>> Easy to solve.
>> I neglected to mention, although, it must be fairly obvious that I'm
>> fairly new to all this ["newbie" but not virgin :-) ]
>> Comments below -->
>>> ini_set("include_path",
>>> "/srv/domain/phpinclude:/srv/domain/record_include:/srv/domain/process_include");
>> 1. Where to I put it?
>> 2. srv = ? domain = ? phpinclude = ? record, process... = ? server, but
>> like what? a url?
> /srv/domain/phpinclude is just an example directory path.
> /var/www or /usr/www are other common examples.
> If your server is Windows, I don't have any experience with how php
> sees windows file paths, but I believe it still uses a unix like
> forward slash syntax.
my server is FreeBSD 7.0

My situation is this: I am evolving www.ptahhotep.com from pure HTML to
php-mysql-css (not an easy task for a newbie :-) )
The challenge is to set up the web site on my local server and then move
it all to my web host.
Unless I am mistaken, I am pretty sure I have no access to the setup
files for apache, mysql or anything else. So, I don't think I can use
the ini_set() function.
Therefore, I am limited to the document root & subdirectories.
So, I still don't understand how the include statement should be
formulated so that when I include a file it will be included from
anywhere in the direcctory tree.
>>> Then just call it without path - IE
>>> include('foo.inc');
>>> php will first look for foo.inc in /srv/domain/phpinclude, then in
>>> /srv/domain/record_include, etc.
>>> make directories for your includes, preferably outside the web root,
>>> and define your include path at the top of your script.
>>> I personally don't like to have . as part of my include path, and
>>> relative include paths (id somedir/foo.inc) are IMHO an even worse
>>> practice.
>> What do you suggest as a better prctice?
> I make application specific directories for include files, and put all
> include files into that application specific directory (application
> mean web application). Sometimes I have more than one if it is a big
> web application.
> Doing it that way allows me to include the same files with several
> webapps on the same server, lets me move the php files around etc.
> without needing to worry about moving the include files, because the
> directory where they are served from is part of the include path.
> It makes upgrading web apps a lot easier - often times you can leave
> the individual php files alone, it's the include files that get
> updated. So when you are developing a new improved version of your web
> app, you can just upload the new directory to your production server
> and change one line in the actual php file (where you define the
> include_path) and your web app is updated - making it cake to roll
> back a week later if you find you need to.
> Separate the pages that are actually served from the pages that are
> included. It makes a lot of things easier down the road.


Phil Jourdan --- p...@ptahhotep.com

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

Reply via email to