2

私のApache wwwディレクトリには、私が取り組んでいるさまざまな個人プロジェクトのサブディレクトリがあります。元:

www/webApp1 www/webApp2

私は webApp2 にアクセスしますhttp://localhost:81/webApp2 (私は現在ポータブル wamp を実行しているため、ポート 81 を使用しています。今は問題ありません...)

ここでは仮想ホストを使用していません。使用する必要があるかもしれませんが、それについてはあまり知りません。

したがって、私の 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

正確に何をしたいですか?ファイルの絶対 URL を取得しますか? その場合、自分でロジックを実行する必要があります-phpは実際にはApacheに統合されていないため、サーバー構造がわかりません。

于 2011-08-12T17:03:08.737 に答える