2014-07-14 2 views
2

기본 디렉토리에 구성 파일이 있는데 파일 포함에 사용할 디렉토리의 절대 경로를 파악하려고합니다. 그러나 창은 경로에 백 슬래시를 사용하고 있습니다. 당신이 그것을 볼 수 있듯이이이 경로를 반환이 방법을 사용 백 슬래시를 표시하는 dirname (__ FILE__)

define('ABSOLUTE_PATH', dirname(__FILE__)); 

include(ABSOLUTE_PATH . "/includes/include.php"); 

...

C:\xampp\htdocs\websites/includes/include.php 

은 슬래시와 백 슬래시의 혼합이다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 아니면 절대 경로를 찾을 수있는 더 나은 방법이 있습니까?

편집 : 나는 그것이 슬래시를 사용하고 싶습니다

이유는 내가 데이터베이스에 저장되는 결과를 직렬화하고있다. 직렬화되면 백 슬래시가 제거됩니다. :)

+0

https://alanhogan.com/tips/php/directory-separator-not-necessary에서

왜,이 * * 백 슬래시를 포함하지 기대? – IMSoP

+0

이 믹스는 include, require 및 관련 함수를 위해 완전히 작동하고 있습니다. 프로젝트에서 이러한 믹스와 같은 것을 얻었지만 문제없이 작동합니다. –

+0

나는 그것이 문제가 있다고 생각하지 않는다. (Windows는 둘 다 사용할 것이다.) 그러나 (단순한)'str_replace ('/', DIRECTORY_SEPARATOR, $ path)'를 정상화하려고 시도 할 수있다. – bishop

답변

6

당신은 DIRECTORY_SEPERATOR 상수를 사용한다 :

include(ABSOLUTE_PATH . DIRECTORY_SEPARATOR . "includes" . DIRECTORY_SEPARATOR . "include.php"); 
+0

이것은 최상의 솔루션 일 수 있지만 가독성을 크게 떨어 뜨립니다. 그리고 더 많은 폴더 중첩으로 인해 더 빨리 악화됩니다. 다음과 같이 시도하십시오 :' "/includes/corp/finance/ca/include.php"'... yikes! –

0

않는 str_replace ("\\", "/"이 dirname을 (FILE)); (더블주의 "\\"풍경 2 에 대한 "\") ... 나를 위해 작동

0

DIRECTORY_SEPARATOR를 사용하여 귀하의 예제에서 필요하지 않습니다. 슬래시 ("/")를 사용하는 한 괜찮습니다. Windows는 상관 없으며 * nix 운영 체제에 가장 적합합니다.

DIRECTORY_SEPARATOR는 시스템에서 제공 한 경로를 분해하는 데 유용합니다. 그들은 Windows 환경에서 올바른 경로 분리 때문에

관련 문제