我想找到我的应用程序的基本URL,所以我可以自动引用我的应用程序树中的其他文件...
因此,在我的应用程序的基础上给出一个文件config.php,如果子目录中的文件包含它,知道在url前加上什么.
application/config.php application/admin/something.php application/css/style.css
因此,http://www.example.com/application/admin/something.php
如果访问它,我希望它能够知道css文件所在$approot/css/style.css
.在这种情况下,$approot
是" /application
"但我想知道应用程序是否安装在别处.
我不确定是否可能,许多应用程序(我认为是phpMyAdmin,Squirrelmail)必须先设置一个配置变量.如果它只是知道它会更加用户友好.
我在自制框架中使用以下内容...将它放在应用程序根文件夹中的一个文件中,然后简单地包含它.
define('ABSPATH', str_replace('\\', '/', dirname(__FILE__)) . '/'); $tempPath1 = explode('/', str_replace('\\', '/', dirname($_SERVER['SCRIPT_FILENAME']))); $tempPath2 = explode('/', substr(ABSPATH, 0, -1)); $tempPath3 = explode('/', str_replace('\\', '/', dirname($_SERVER['PHP_SELF']))); for ($i = count($tempPath2); $i < count($tempPath1); $i++) array_pop ($tempPath3); $urladdr = $_SERVER['HTTP_HOST'] . implode('/', $tempPath3); if ($urladdr{strlen($urladdr) - 1}== '/') define('URLADDR', 'http://' . $urladdr); else define('URLADDR', 'http://' . $urladdr . '/'); unset($tempPath1, $tempPath2, $tempPath3, $urladdr);
上面的代码定义了两个常量.ABSPATH包含应用程序根目录(本地文件系统)的绝对路径,而URLADDR包含应用程序的完全限定URL.它在mod_rewrite情况下工作.
您可以使用以下代码找到基本URL:
define('SITE_BASE_PATH','http://'.preg_replace('/[^a-zA-Z0-9]/i','',$_SERVER['HTTP_HOST']).'/'.str_replace('\\','/',substr(dirname(__FILE__),strlen($_SERVER['DOCUMENT_ROOT']))).'/');
简短而且最好.