2011-08-12 14 views
2

私のapache www dirには、私が取り組んでいる個人的なプロジェクトのサブディレクトリがあります。例:私はそれは今重要ではありませんポート81によ、なぜasp.netのResolveUrlに相当するPHP

www /ののwebapp1 WWW/webapp2を

私はhttp://localhost:81/webApp2 によってwebapp2をへのアクセスを(私は現在、ポータブルWAMPを実行し、それはです... )

私はここで仮想ホストを使用していません、おそらく私はすべきですが、それについてはあまりよく分かりません。私は、URLを「解決」するために、任意の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; 
} 

は、だから私のwebbApp2のために、私は次の関数を使用してファイルutil/files.phpを持っています。

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に組み込みのものがあります。さらに重要なのは、Linuxボックスの下でアプリケーションを実行すると、public_htmlのパッチが私のuserdirを処理することが分かります。それは本当に移植性がありません。

提案がありますか?

答えて

0

正確に何をしますか?ファイルの絶対URLを取得しますか?もしあなたが論理を自分でしなければならないのなら、PHPが本当にApacheに統合されていないとしても、あなたのサーバー構造は分かりません。

+0

私は自分の質問を編集して機能の結果を示しました。私がしたいのは、asp.netの 'Page.ResolveUrl("〜/ somefolder/somefile.css ")'や 'Page.ResolveClientUrl("〜/ somefolder/somefile.css ")の動作です。 – Johnny5

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'); 
関連する問題