실행중인 스크립트의 상위 디렉토리 가져 오기
PHP 에서 www 루트와 관련된 현재 실행중인 스크립트 의 상위 디렉토리 를 얻는 가장 깨끗한 방법은 무엇 입니까? 내가 가지고 있다고 가정합니다.
$_SERVER['SCRIPT_NAME'] == '/relative/path/to/script/index.php'
아니면 그냥 :
$something_else == '/relative/path/to/script/'
그리고 /relative/path/to/
슬래시를 제대로 삽입 해야합니다 . 무엇을 제안 하시겠습니까? 하나의 라이너가 선호됩니다.
편집하다
www 루트에 상대적인 경로를 가져와야 dirname(__FILE__)
하며 파일 시스템의 절대 경로를 제공하므로 작동하지 않습니다. $_SERVER['SCRIPT_NAME']
반면에 www 루트에서 '시작'합니다.
스크립트가있는 /var/www/dir/index.php
경우 다음이 반환됩니다.
dirname(__FILE__); // /var/www/dir
또는
dirname( dirname(__FILE__) ); // /var/www
편집하다
이것은 app_root에서 상대 경로를 결정하기 위해 많은 프레임 워크에서 사용되는 기술입니다.
파일 구조 :
/ var / www / index.php subdir / library.php
index.php는 모든 요청이 라우팅되는 디스패처 / 부 스트랩 파일입니다.
define(ROOT_PATH, dirname(__FILE__) ); // /var/www
library.php는 추가 디렉토리에있는 일부 파일이며 앱 루트 (/ var / www /)에 상대적인 경로를 결정해야합니다.
$path_current = dirname( __FILE__ ); // /var/www/subdir
$path_relative = str_replace(ROOT_PATH, '', $path_current); // /subdir
상대 경로를 계산하는 더 좋은 방법 str_replace()
이있을 수 있지만 아이디어를 얻을 수 있습니다.
PHP 5.3.0부터이 __DIR__
목적으로 사용할 수 있습니다 .
파일의 디렉토리입니다. 포함 내에서 사용하면 포함 된 파일의 디렉토리가 반환됩니다. 이것은 dirname (__ FILE__)과 동일합니다.
PHP Magic 상수를 참조하십시오 .
C:\www>php --version
PHP 5.5.6 (cli) (built: Nov 12 2013 11:33:44)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
C:\www>php -r "echo __DIR__;"
C:\www
질문을 제대로 이해했다면 실행중인 스크립트가
/relative/path/to/script/index.php
이렇게하면 www : 문서와 관련된 실행중인 스크립트의 상위 디렉토리가 제공됩니다.
$parent_dir = dirname(dirname($_SERVER['SCRIPT_NAME'])) . '/';
//$parent_dir will be '/relative/path/to/'
서버 루트를 기준으로 실행중인 스크립트의 상위 디렉토리를 원하는 경우 :
$parent_dir = dirname(dirname($_SERVER['SCRIPT_FILENAME'])) . '/';
//$parent_dir will be '/root/some/path/relative/path/to/'
현재 스크립트의 parentdir을 가져옵니다.
$parent_dir = dirname(__DIR__);
추악하지만 이렇게 할 것입니다.
substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'],basename($_SERVER['SCRIPT_NAME'])))
도움이 되었기를 바랍니다.
echo getcwd().'<br>'; // getcwd() will return current working directory
echo dirname(getcwd(),1).'<br>';
echo dirname(getcwd(),2).'<br>';
echo dirname(getcwd(),3).'<br>';
출력 :
C:\wamp64\www\public_html\step
C:\wamp64\www\public_html
C:\wamp64\www
C:\wamp64
$dir = dirname($file) . DIRECTORY_SEPARATOR;
다음은 내가 실행하지 않기 때문에 사용하는 것입니다> 5.2
function getCurrentOrParentDirectory($type='current')
{
if ($type == 'current') {
$path = dirname(__FILE__);
} else {
$path = dirname(dirname(__FILE__));
}
$position = strrpos($path, '/') + 1;
return substr($path, $position);
}
상위 디렉토리에 대해 @mike b가 제안한 파일이 포함 된 이중 dirname이며 해당 구문을 한 번만 사용하여 현재 디렉토리를 찾습니다.
이 함수는 NAME 만 반환하므로 나중에 슬래시를 추가해야합니다.
이 시도. Windows 또는 Linux 서버에서 모두 작동합니다 ..
str_replace ( '\\', '/', dirname (dirname (__ FILE__)))
이것은 또한 가능한 해결책입니다
$relative = '/relative/path/to/script/';
$absolute = __DIR__. '/../' .$relative;
이것이 제가 사용하는 기능입니다. 한 번 만들었으므로 항상이 기능을 사용할 수 있습니다.
function getDir(){
$directory = dirname(__FILE__);
$directory = explode("/",$directory);
$findTarget = 0;
$targetPath = "";
foreach($directory as $dir){
if($findTarget == 1){
$targetPath = "".$targetPath."/".$dir."";
}
if($dir == "public_html"){
$findTarget = 1;
}
}
return "http://www.".$_SERVER['SERVER_NAME']."".$targetPath."";
}
도움이 되길 바랍니다
function get_directory(){
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$protocol = substr(strtolower($_SERVER["SERVER_PROTOCOL"]), 0, strpos(strtolower($_SERVER["SERVER_PROTOCOL"]), "/")) . $s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
return $protocol . "://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['PHP_SELF']);
}
define("ROOT_PATH", get_directory()."/" );
echo ROOT_PATH;
직접 확인했지만 약간 엉성하지만 작동합니다.
substr(dirname($_SERVER['SCRIPT_NAME']), 0, strrpos(dirname($_SERVER['SCRIPT_NAME']), '/') + 1)
그래서 내가 가지고 있다면 /path/to/folder/index.php
이것은 /path/to/
.
참고URL : https://stackoverflow.com/questions/1882044/get-parent-directory-of-running-script
'IT박스' 카테고리의 다른 글
사용자가 특정 요소로 스크롤 할 때 이벤트 트리거-jQuery 사용 (0) | 2020.11.23 |
---|---|
피벗 테이블에 데이터를 첨부하는 동안 타임 스탬프가 업데이트되지 않습니다. (0) | 2020.11.23 |
JPEG의 품질 수준을 알 수 있습니까? (0) | 2020.11.23 |
파이썬에서 문자열 내에서 여러 문자열 찾기 (0) | 2020.11.23 |
깜박이는 C # winforms를 중지하는 방법 (0) | 2020.11.23 |