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 --- pj@xxxxxxxxxxxxx http://www.ptahhotep.com http://www.chiccantine.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php