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
'Nice programing' 카테고리의 다른 글
괄호 사이의 텍스트 제거 PHP (0) | 2020.12.02 |
---|---|
Magento 시스템 구성에서 데이터를 가져 오는 방법 (0) | 2020.12.02 |
45 초 내에 Tomcat 서버가 시작되지 않음 (0) | 2020.12.02 |
두 개의 날짜가 주어지면 TimeSpan을 분 단위로 얻으려면 어떻게해야합니까? (0) | 2020.12.02 |
Rails의 모든 테이블에서 모든 데이터를 삭제하는 방법은 무엇입니까? (0) | 2020.12.02 |