Search code examples
phposx-snow-leopardrootabsolute-path

Absolute path issues in PHP on localhost in OS X


I'm having some issues with defined absolute paths in PHP. I define the SITE_ROOT and APP_PATH like so:

defined('SITE_ROOT') ? null : 
define('SITE_ROOT', str_replace('//','/',dirname(__FILE__)) );

defined('APP_PATH') ? null : define('APP_PATH', SITE_ROOT.DS.'application');

When using the APP_PATH in an application like so:

echo APP_PATH;

...this is what I get:

/Users/user/Sites/MyWebsite/application

What I want is for the output to be:

localhost/application

Is there any non-kludgy way of doing this?

My use case is to use the APP_PATH (already in use for doing all my require()'s) echoed out with HTML to avoid relative pathing problems within URLs for href's.


Solution

  • The __FILE__ constant contains the file path, nothing else. Look at $_SERVER['REQUEST_URI'] and $_SERVER['HTTP_HOST'] to find out what URL was used to invoke the script. This is environment information that must be supplied by the web server that initiated the PHP script (e.g. Apache), it's not something PHP inherently knows.