2

在我的 apache www 目录中,我有我从事的不同个人项目的子目录。前任:

www/webApp1 www/webApp2

http://localhost:81/webApp2 我通过(我目前运行便携式 wamp,这就是我在端口 81 上的原因。现在没关系......)访问 webApp2

我在这里没有使用虚拟主机,也许我应该使用,但我对此了解不多。

所以对于我的 webbApp2,我有util/files.php具有以下功能的文件:

function BaseUrl ()
{
    $baseDir = dirname(dirname(__FILE__));
    $pos = strrpos($baseDir, '\\');
    if (!$pos)
    {
        $pos = strrpos($baseDir, '/');
    }
    $theDir = substr ($baseDir, $pos + 1);
    if ($theDir == 'public_html')
    {
        $theDir = '~johnny5'; //Hmmmmm...
    }
    return 'http://'.$_SERVER["HTTP_HOST"].'/'.$theDir;
}

我可以从任何 php 文件中调用此方法来“解析”一个 url。

require_once("util/files.php");
$myUrl = BaseUrl ().'/someFolderAtTheRootOfWebApp2/myfile.css';
$css = $baseUrl.'/css/tab.css';

然后$css"http://localhost:81/webApp2/someFolderAtTheRootOfWebApp2/myfile.css"。例如,这样我就可以动态生成指向我的 css 或 javascript 文件的链接。

在 asp.Net 中,我会写string url = Page.ResolveUrl ("~/folder/file.css");.

它确实有效,但我想知道是否有更优雅的方式来做到这一点。也许php中内置了一些东西来处理这个问题。public_html更重要的是,当我在我的 Linux 机器下运行应用程序时,你可以看到处理我的 userdir 的补丁。这不是真正的便携。

有什么建议么?

4

2 回答 2

0

在这种情况下使用 ini_set 和 ini_get 是个好主意吗?

ini_set('include_class_path', 'http://'.$_SERVER["HTTP_HOST"]."/Project/lib/");
ini_set('include_controls_path', 'http://'.$_SERVER["HTTP_HOST"].'Project/controls/');
echo $get = ini_get('include_class_path');
于 2012-02-27T22:09:11.330 回答
0

你到底想做什么?获取文件的绝对网址?如果是这样,你必须自己做逻辑 - 因为 php 没有真正集成到 apache 中,所以不知道你的服务器结构。

于 2011-08-12T17:03:08.737 回答