Reputation: 8145
I'm working on the 404 page for my company's site, and it has a $depth
variable that says "../site/". This works fine for any bad urls in the base directory, but anything in a subfolder is grabbing the css files from the wrong place using the $depth
variable. I tried $depth = '/site/'
and it grabbed no css files at all. My question is, how can I have PHP figure out the $depth
dynamically, specifically, the number of ../
to put in? If I can get a number or something, this is easy, but I can't seem to find a quick, easy way to do this.
Edit: Turns out, the 404.php file is only in one location, regardless of which directory the bad url is referencing. So, my real problem is probably not php-related at all. Why would a 404 page get a css file in one folder when reached from www.siteurl.com/404
but get a css file of the same name from a different folder when reached from www.siteurl.com/foo/bar
?
Upvotes: 1
Views: 3298
Reputation: 459
Here's a function I wrote a few years ago, I use it on my website. It should help:
<?
function absolute_include($file)
{
/*
$file is the file url relative to the root of your site.
Yourdomain.com/folder/file.inc would be passed as
"folder/file.inc"
*/
$folder_depth = substr_count($_SERVER["PHP_SELF"] , "/");
if($folder_depth == false)
$folder_depth = 1;
include(str_repeat("../", $folder_depth - 1) . $file);
}
?>
Upvotes: 4
Reputation: 8990
If you're just trying to pull in CSS, in your HTML head, you can just use /< path_to_css >.css
By using a / at the beginning, you're telling the browser to go to the root directory of your site to look for the requested site.
If you need the path via PHP, you can use
$_SERVER['DOCUMENT_ROOT']
which will give you the direct path to your site root directory which you can build from.
Upvotes: 1
Reputation: 30180
Use the absolute URL of the CSS files to avoid having to mess with paths like that.
If this doesn't work for you for whatever reason try looking at the $_SERVER
array, specifically $_SERVER['PHP_SELF']
and $_SERVER['DOCUMENT_ROOT']
.
Upvotes: 2
Reputation: 57721
You have to map a known webpath to a known diskpath (like the web/diskroot). Based on that information you can derive where your current webpath points to.
Upvotes: 0