2010-08-24 3 views
3
var_dump(DIRECTORY_SEPARATOR) // string '\' (length=1) 
var_dump(file_exists("C:/1212.txt")); // true 
var_dump(file_exists("C:\1212.txt")); // false 
var_dump(file_exists("C:".DIRECTORY_SEPARATOR."1212.txt")); // false 

DIRECTORY_SEPARATOR의 기능은 무엇입니까? DIRECTORY_SEPARATOR을 사용할 때 왜 위의 경우가 거짓입니까?Windows의 file_exists()에서 DIRECTORY_SEPARATOR 사용

+0

"C : \\ 1212.txt"'를 사용해보십시오. – kennytm

답변

3

시도 :

var_dump(file_exists("C:\\1212.txt")); 

백 슬래시 당신이 서로를 따를 필요가 문자열에 하나를 추가 할 수있는 이스케이프 문자입니다.

+0

예, 문자열을 tést로 복사하지만 슬래시는 잊지 마십시오 – meotimdihia

+0

이렇게하면 스크립트가 Windows에서 작동 할 수 있습니다. 스크립트를 이식 할 수있게하려면 RobertPitts 응답을 확인하고 대소 문자를 구분하는 파일 경로를 사용해야합니다. –

+0

대부분의 유닉스 배포판은 대소 문자를 구분합니다. NTFS 기반 데이터가 선택 사항인데,이 점에 대한 조언은 두 시스템 모두를 지원하기 위해 모든 소문자를 유지하는 것입니다. – RobertPitt

0

DIRECTORY_SEPARATOR은 Unix 시스템에서는 /이고 Win 시스템에서는 \입니다. 니트는 PS에 올 때

8

은 - Path Separators 여기 당신을위한 팁입니다 :

리눅스는 /

Windows 지원 \/

그래서 내 조언은 모든 것을에게 /

을하는 것을 지원합니다
define('DS','/'); //Should work. 

나 크로스 플랫폼이되도록 응용 프로그램을 빌드하십시오. 암탉은이 일을 생각합니다.

define('DS','/'); 
define('BASE_ROOT',str_replace('\\',DS,dirname(__FILE__))); 
require_once BASE_ROOT . DS . 'includes' . DS . 'init.php'; 

그러면 두 플랫폼에서 모두 잘 작동합니다.

학습 :

http://en.wikipedia.org/wiki/Filename

http://en.wikipedia.org/wiki/Path_(computing)

0

DIRECTORY_SEPARATOR은 PHP 상수로, 프로그래머가 다른 운영 체제에서 작동하는 스크립트를 작성할 수 있도록 도와줍니다.

Windows 시스템을 사용 중이라고 가정하면 사용자의 구성이 잘못되어있는 것처럼 보입니다.

10

DIRECTORY_SOPARATOR의 기능은 무엇입니까?

DIRECTORY_SEPARATOR는 플랫폼에 따라 "/" (UNIX) 또는 "\" (윈도우)에 같습니다.

위의 경우 DIRECTORY_SEPARATOR을 (를) 사용하는 이유는 무엇입니까?

따옴표 문자열에 "\123"이 (PHP Manual에 대한 자세한 내용) "Q"로 변환 때문입니다.

Windows 경로를 구성 할 때 백 슬래시 : "C:\\1212.txt"을 이스케이프 처리하거나 작은 따옴표로 묶은 문자열 : 'C:\1212.txt'을 사용해야합니다.

유닉스 디렉토리 구분자 "/"을 아무런 상수없이 경로 문자열에 직접 하드 코딩하여 사용하는 것이 더 좋고 깨끗한 방법 일 수도 있습니다. Windows에서는 "C:/1212.txt"으로 잘 작동합니다.

+0

http://stackoverflow.com/questions/625332/is-using-the-directory-separator-constant-neccessary에 따르면 DIRECTORY_SEPARATOR은 /와 \를 사용하지 않는 다른 OS가 있기 때문에 필요할 것입니다. /edward.de.leau.net/is-the-php-directory_separator-constant-really-needed-20130121.html – edelwater

0

블로그 및 블로그와 관련된 몇 가지 실수가 있으며 슬래시가있는 Windows와 관련된 다른 장소는 없습니다. * 사용자가있는 경우에 따라 \ 및/문자를 제공하는 디렉토리 구분 기호 상수 윈도우에서 앞으로 슬래시 지원은 /는 부분적으로/을 구현하기 때문에 등 윈도우, 닉스, ...

실행

이러한 상수/ 매우/필요가 있습니다.

대부분의 Windows 명령 줄 유틸리티에는 /, 유닉스 스타일의 하이픈 대신 슬래시를 사용하여 액세스하는 스위치가 있습니다. 이것이 디렉토리 분리 상수가 스크립트에서 중요한 이유입니다.

깨진 예 :

C : \ 온도> 델 C/온도/* O/S/Q

오류 메시지 : 잘못된 스위치 - "온도"..

C : \ 온도>

0

DIRECTORY_SEPARATOR 매우 불필요하다.

IMHO 반드시 으로 삭제해야합니다.

가 '/'이외의 사용에는 OS가 없습니다, 당신이 웹 서버 실행됩니다되는 OS 의미 (심각? 맥 OS 고전을?)

는 "바람과 불꽃"회신을 언급하기 위해, 자신의 예는 고장 시스템 명령을 실행하기로 결정하면 어떤 경우에도 이식성이 느슨해지기 때문입니다. 물론 시스템 명령은 시스템 구문으로 표현됩니다. 그러나 fopen, file_get_content 등의 시스템 호출을 감싸는 모든 PHP 명령은 Windows의 '/'와 잘 동작합니다.