내가 PHP (종종)로 작업 할 때마다 나는 보통 Windows 상자에서 작업하지만, 나는 (시도해보십시오) 플랫폼에 독립적 인 응용 프로그램을 개발합니다. 한 가지 중요한 점은 디렉토리 분리 기호를 사용한다는 점입니다.PHP 디렉토리 구분자, 슬래시 강제; non-intrusive
PHP의 Windows 환경에서 파일 시스템 작업을 수행하는 많은 사람들이 알고 있듯이 PHP는 거꾸로 대신 슬래시를 사용할 수 있습니다. PHP는 후드 아래에서이를 정렬합니다. 문자열 리터럴을 사용하여 경로를 fopen()
또는 그 이상으로 전달할 때이 모든 것이 좋습니다. 경로를 검색 할 때 __FILE__
이거나 realpath()
으로 확장하면 검색된 경로는 물론 OS 적절한 슬래시를 사용합니다. 또한, 나는 후행 슬래시에 몇 가지 불일치를 발견했습니다. 한 번 또는 두 번 __DIR__
한 (백 슬래시) 너무 realpath()
을 추가했기 때문에 대신하고의 (나는 후행 슬래시를 선호하지만 간헐적으로)
이 명확하게 문자열 비교에 대한 문제 :
신뢰성을 위해서compare_somehow('path/to/file.php', __DIR__);
, 내가 갈 필요 해요 :이 작업을 많이처럼 보인다
compare_somehow('path/to/file.php', rtrim(strtr(__DIR__, '\\', '/'), '/') . '/');
. 함수에 넣을 수 있습니다. 이제 모든 OO 코드에서 임의의 함수 종속성에 빠지게되었습니다.
필자는 PHP가 완벽하지 않고 수용을해야한다는 것을 알고 있지만, 파일 시스템 히트가 강제로 슬래시 된 경로를 검색하도록 강제하는 일부 플랫폼 독립적 인 해결 방법이 있거나 반드시 이 목적을위한 클래스 독립적 인 함수.
요약 질문 (의) :
- 인가 거기에 약간의 마법 (하지만 신뢰성) 해결 방법, 해킹 또는 기타 서버 OS에 관계없이, 다시 앞으로 인하 파일 시스템 경로를 걷어차 PHP를 강제로 ?
- 저는 대답이 이 아니며 위의 내용에이 없으므로 계속 진행할 것입니다. 디렉토리 슬래시 (또는 선택 사항, 실제로는)를 적용하기 위해 어떤 조항을 디렉토리 구분자로 사용할 수 있습니까? 나는 앞에서 언급 한 필터 함수를 통해 가정하고 있지만, 이제 어디로 가야합니까?
는 앞으로 모든 것을 슬래시. 호스트 OS 구분 기호가 #*&@
인 경우에도 마찬가지입니다.
[DIRECTORY_SEPARATOR] (http://www.php.net/manual/en/dir.constants.php)를 보았습니까? – vascowhite
@vascowhite - 물론 있습니다. 그러나 나는 그것이 어떤 이익의 방법인지 보지 않는다. 'DS'에 별명을 붙여도 'DS'.DS. '파일.'. 또한, 사용자가 제공하는 경로 (* 설정 파일 등)는 여전히'strtr()'되어야하거나'DIRECTORY_SEPARATOR'를 사용할 필요가 있습니다. – Dan
경로를 비교하는 이유는 무엇입니까? PHP의 함수를 사용하여 파일이나 디렉토리가 존재하는지 테스트 할 수 없습니까? 그건 OS 불가 지론일까요? – vascowhite