programing

PHP dirname(_FILE__)에서 한 단계 위로 올라가는 방법

procenter 2022. 12. 9. 22:18
반응형

PHP dirname(_FILE__)에서 한 단계 위로 올라가는 방법

폴더 구조는 다음과 같습니다.

mydomain.example
  ->Folder-A
  ->Folder-B

Database에서 다음 문자열은 다음과 같습니다.../Folder-B/image1.jpg의 이미지를 가리키고 있습니다.Folder-B.

의 스크립트 내부Folder-A, 사용하고 있습니다.dirname(__FILE__)파일명을 가져오면mydomain.example/Folder-A이 스크립트 안에, 나는 다음과 같은 문자열이 필요합니다.'mydomain.example/Folder-B/image1.jpg.나는 노력했다.

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

이것은 로 표시됩니다.mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg

이것은 Facebook 공유 버튼용이며 올바른 이미지를 가져오지 못합니다.길을 제대로 잡을 줄 아는 사람?

다음 URL을 알고 싶습니다.mydomain.example%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);

만약 당신이 php 7.0+를 가지고 있다면 당신은 레벨을 사용할 수 있습니다.

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

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

이거 드셔보세요

dirname(dirname( __ FILE__))

편집: 올바른 구문이 아니므로 "./"를 제거했습니다.그게 없으면, 완벽하게 작동합니다.

PHP의 dirname 함수를 사용할 수 있습니다. <?php echo dirname(__DIR__); ?>. 그러면 의 부모 디렉토리의 이름이 나타납니다.__DIR__현재 디렉토리를 저장합니다.

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

level은 폴더로 돌아갈 횟수입니다.

사용할 수 있습니다.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__)));

Windows 에서는, 을 치환합니다.\와 함께/필요한 경우 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 이하인 경우 Who가 보유하지 않는 경우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));

절대 경로가 있는 경우(다음 예)를 사용합니다.

$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

반응형