Re: Full versus relative URLs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

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.




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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux