Nice programing

dirname (__ FILE__)에서 한 수준 위로 이동하는 방법

nicepro 2020. 12. 2. 21:58
반응형

dirname (__ FILE__)에서 한 수준 위로 이동하는 방법


다음과 같은 폴더 구조가 있습니다.

mydomain.com
  ->Folder-A
  ->Folder-B

폴더 B의 이미지를 가리키는 '../Folder-B/image1.jpg'라는 데이터베이스의 문자열이 있습니다.

Folder-A의 스크립트 내에서 dirname ( FILE )을 사용 하여 파일 이름을 가져오고 mydomain.com/Folder-A. 이 스크립트 내에서라는 문자열을 가져와야 'mydomain.com/Folder-B/image1.jpg합니다. 나는 시도했다

$path=dirname(__FILE__).'/'.'../Folder-B/image1.jpg';

이것은 다음과 같이 나타납니다. mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg

이것은 페이스 북 공유 버튼 용이며 올바른 이미지를 가져 오지 못합니다. 누구든지 경로를 올바르게 얻는 방법을 알고 있습니까?

편집 : URL을 얻고 싶습니다 >>> mydomain.com % 2FFolder-B % 2Fimage1.jpg


PHP <5.3 사용 :

$upOne = realpath(dirname(__FILE__) . '/..');

PHP 5.3 ~ 5.6에서는 다음을 사용합니다.

$upOne = realpath(__DIR__ . '/..');

PHP> = 7.0에서 다음을 사용하십시오.

$upOne = dirname(__DIR__, 1);

이 시도

dirname(dirname( __ FILE__))

편집 : 올바른 구문이 아니기 때문에 "./"를 제거했습니다. 그것 없이는 완벽하게 작동합니다.


PHP 7.0 이상이 있으면 레벨을 사용할 수 있습니다.

dirname( __FILE__, 2 ) 두 번째 매개 변수를 사용하여 되돌리려는 수준의 양을 정의 할 수 있습니다.

http://php.net/manual/en/function.dirname.php


PHP의 dirname 함수를 사용할 수 있습니다. <?php echo dirname(__DIR__); ?>. 그러면 __DIR__현재 디렉토리를 저장하는 의 상위 디렉토리 이름이 제공됩니다 .


realpath불필요한 부분을 제거 하는 사용할 수 있습니다 .

// One level up
echo str_replace(realpath(dirname(__FILE__) . '/..'), '', realpath(dirname(__FILE__)));

// Two levels etc.
echo str_replace(realpath(dirname(__FILE__) . '/../..'), '', realpath(dirname(__FILE__)));

창에 또한 교체 \/URL의 경우 필요가있다.


한 수준 위로, 나는 다음을 사용했습니다.

str_replace(basename(__DIR__) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';

또는 php <5.3의 경우 :

str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';

누구에게나 호스팅 환경을 공유하고 현재의 PHP를 7.0 이하로 가질 수있는 기회를 누구에게도 가지고 있지 않은 사람은 dirname( __FILE__, 2 );다음을 사용하는 것이 가능합니다.

function dirname_safe($path, $level = 0){
    $dir = explode(DIRECTORY_SEPARATOR, $path);
    $level = $level * -1;
    if($level == 0) $level = count($dir);
    array_splice($dir, $level);
    return implode($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
}

print_r(dirname_safe(__DIR__, 2));

dirname(__DIR__,level);
dirname(__DIR__,1);

레벨은 몇 번 폴더로 돌아갈 것인가


절대 경로가 있으면 이것을 사용합니다 (예제입니다).

$img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/Folder-B/image1.jpg");

보여줄 사진이 있으면 이것으로 충분합니다.

echo("<img src='/Folder-B/image1.jpg'>");

참고URL : https://stackoverflow.com/questions/11094776/php-how-to-go-one-level-up-on-dirname-file

반응형