Forum Moderators: coopster
root/file1.php
<?
include('folder1/file2.php');
?>
root/folder1/file2.php
<?
include('../folder2/file3.php');
?>
root/folder2/file3.php
<?
echo 'good';
?>
if i run file /folder1/file2.php it finds file3.php ok. however if i run file1.php it can't find file3.php. this is because according to the php site "If filename begins with ./ or ../, it is looked only in the current working directory."
i suppose a solution would be to rewrite the cwd on every script AND then switch it back after every includes. but that seems extremely unnecessary.
my include path is just ".;C:\php5\pear" on windows and its equivalent on apache. both are running php 5.
one thing i can't figure out is if is if i have this code
<?
include('/file.php');
?>
It should be your document root.
[edited by: eelixduppy at 8:09 pm (utc) on Dec. 17, 2008]
[edit reason] added msg anchor [/edit]
also i do know that:
<?php include $_SERVER['DOCUMENT_ROOT'].'/footer.php'; ?> and
<?php include '/footer.php'; ?>
do not resolve to the same thing. (at least with my virtualhosted configuration).
phpinfo reports that my documentroot is the default documentroot from the main httpd.conf. and not what is resolved by the virtualdocumentroot. however if i set documentroot in the virtualhost block it reports this correctly, but its not dynamic. it seems like that kind of defeats the purpose?
echo $_SERVER['DOCUMENT_ROOT'].'/footer.php';
should give you the correct file if the footer is located in the root of the domain
echo '/footer.php';
should give the file if it is located at the root of the server itself, which I doubt
for includes you are always dealing with the server's filesystem and is not relative to where your website may be setup
>> you can't dynamically set a Document root with virtual hosts
if you couldn't set it how would apache know where to look for the site?
first off, won't echoing '/footer.php' always output /footer.php regardless?
secondly when echoing the documentroot, it is not the directory from where the files are being served. it echo either the default documentroot for the server or the explicitly set documentroot within the virtualhost block. Both of these values being different than what the virtualdocumentroot resolves too. this value resolves correctly and serves the files from the correct location, however i have no way of every echoing that value with a variable.
so right off the bat i had the same question as you.... why does it know where to look for the files in the first place?
hahaha, sorry I got distracted somewhere in there, and I'm obviously an idiot
>> however i have no way of every echoing that value with a variable
hmmm, makes me think it's a config issue, honestly I have no idea, sorry, I would poke around in the apache docs to see if something is not configured quite right
root/file1.php
<?php
if (!defined('ROOT_DIR')){
define('ROOT_DIR', dirname(__FILE__));
}
include(ROOT_DIR.'/folder1/file2.php');
?>
<?php
if (!defined('ROOT_DIR')){
define('ROOT_DIR', dirname(dirname(__FILE__)));
}
include(ROOT_DIR.'/folder2/file3.php');
?>
<?php
echo 'good';
?>
[edited by: Alcoholico at 10:58 pm (utc) on Dec. 20, 2008]