2011-08-12 7 views
2

내 apache www dir에서 작업하는 개인 프로젝트의 서브 디렉토리가 있습니다. 예 : 나는 그것은 중요하지 않습니다 지금 포트 (81)에있어 왜asp.net의 ResolveUrl에 해당하는 PHP

은 www /에서 webApp1 www /에서 webApp2

내가 (나는 현재 휴대용 WAMP를 실행 http://localhost:81/webApp2에 의해 webApp2에 액세스

, 그 ...)

여기에 가상 호스트를 사용하고 있지 않습니다. 어쩌면해야하지만, 그것에 대해 많이 알지 못합니다.

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; 
} 

내가 URL을 "해결"어떤 PHP 파일에서이 메서드를 호출 할 수 있습니다

그래서 내 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 또는 자바 스크립트 파일에 대한 링크를 동적으로 생성 할 수 있습니다.

asp.Net에서 나는 string url = Page.ResolveUrl ("~/folder/file.css");이라고 쓸 것입니다.

효과가 있지만 좀 더 우아한 방법이 있는지 궁금합니다. 어쩌면 거기에 PHP에서 뭔가를 처리 할 수 ​​있습니다. 그리고 더 중요한 것은 public_html 패치를보고 리눅스 박스에서 앱을 실행할 때 내 userdir을 처리 할 수 ​​있습니다. 그건 정말 이식성이 아닙니다.

제안 사항?

답변

0

정확히 무엇을 하시겠습니까? 파일에 대한 절대 URL 가져 오기? php가 아파치에 실제로 통합되지 않았기 때문에 논리를 스스로해야한다. 그렇다면 서버 구조에 대해 전혀 모른다.

+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');