2012-04-10 3 views
0
|root 
| subdir 1 
| subdir 2 
|  subdir 3 
|  subdir 4 
|   subdir 5 
|    myphp.php 

|relativeroot2(images directory) 
    img1.jpg 

의 루트 디렉토리에 대한 상대 디렉토리에서 이미지를 포함하는 방법 스피 어떻게 그렇게 할 수없는 relativeroot2 dir.Iam에서 (img1.jpg)를 포함하는 것을 시도 나는 그것을 포함한다. 내가 말할 때 $_SERVER['DOCUMENT_ROOT'] 스피 외부 루트의 당신의 그림은 그 relativeroot2을 보여주는 경우 <img src ="<?php echo $_SERVER['DOCUMENT_ROOT']?>"/relativeroot2/img1.jpg">위 myphp.php 스크립트에서 PHP

+0

이 디렉토리는 웹 루트 외부입니까? – mikevoermans

+0

@mikevoermans : 예 웹 루트 외부에 있습니다 – Someone

+0

웹 루트 밖에 있으면 처리 할 수 ​​없습니다. 파일의 내용을 가져와 적절한 MIME 유형 헤더로 인쇄해야합니다. 내가 PHP 5.2 '이 dirname (__ FILE의 __)를'사용합니다 – MetalFrog

답변

1

이 웹 폴더

root 
    /includes 
    /relativeroot1 
    /relativeroot2 

위의 includes 폴더에 path.php라는 이름의 파일을 만들고 다음

<?php 

if (session_id() == '') { 
    session_start(); /* if not already done */ 
} 

/* replace value below with appropriate header to root distance of this include file */ 

$header_to_root_distance = 1; 
$header_dir = dirname(__FILE__); 

$root_distance = substr_count($header_dir, DIRECTORY_SEPARATOR) - $header_to_root_distance; 

    if($_SERVER['SERVER_ADDR']){ 
    $include_distance = substr_count(dirname($_SERVER['SCRIPT_FILENAME']), "/"); 
    }else{ 
    $include_distance = substr_count(dirname($_SERVER['SCRIPT_FILENAME']), "\\"); 
    } 

$r_path = str_repeat('../', $include_distance - $root_distance); 
$_SESSION['r_path'] = $r_path; 

/* Note - $r_path holds your relative url starting from the root folder */ 

?> 

root.htaccess 파일을 만듭니다 삽입 모습입니다 가정 위의 폴더에 다음을 삽입하십시오.

<IfModule php5_module> 
    php_value include_path "includes/" 
</IfModule> 

이제 상대 경로가 그래서 귀하의 경우 모든 파일에서 모든 상대 경로를 요청 상단

<?php require 'path.php' ?> 

에서 다음 당신의 myphp.php 스크립트를 예컨대 삽입 할 파일을 엽니 다. 다음을 수행하십시오.

<img src="<?php echo $r_path.'relativeroot2/img.jpg' ?>" title="My Image" /> 
0

을 포함 할 수있는 방법을 THER에서 "루트"와 같은 값을 반환하지만, 동일한 상위 디렉토리에, 당신은 갈 ../을 사용할 수 있습니다 그것을 지정하기 전에 한 레벨 올리십시오. 이미지 태그에 큰 따옴표가 있습니다.

<img src ="<?php echo $_SERVER['DOCUMENT_ROOT']?>/../relativeroot2/img1.jpg"> 
+0

또는 PHP 5.3이있을 때 동일한 작업을 수행 일정'__DIR__'을가 $ _SERVER ['DOCUMENT_ROOT '] 그것은 __DIR__'와'dirname이 ('처럼 보이는 – Stony

+0

로 __ FILE__)'모두 현재 실행중인 파일의 상위 디렉토리를 반환합니다. 그게 맞습니까? $ _SERVER [ 'DOCUMENT_ROOT']는 항상 웹 루트 디렉토리를 제공합니다. 현재 파일과 관련이없는 경로를 지정하려는 경우 (예 : 여러 다른 문서에서 사용되는 포함 파일의 위치를 ​​지정하려는 경우) 사용합니다. – octern

+0

@octern : 사용자가 제공 한 코드로 여전히 이미지에 액세스 할 수 없습니다. – Someone

관련 문제