2014-09-21 9 views
0

OSX (매버릭스) 호스트에서 페도라 VM에서 램프를 실행합니다.PHP __FILE__은 리눅스에서 백 슬래시를 반환합니다 OSX 호스트에서 마운트 된 VM 파일

가 VM의 파일을 설치 폴더 /media/sf_www/application/Some/Name/Space/FileName.php입니다

<?php 
namespace Some\Name\Space; 

die(__FILE__); 
?> 

출력

/미디어/sf_www/응용 프로그램/일부 \ 이름 \ Space \ FileName.php

그러나 Linux 호스트에서 프로덕션 환경에서 동일한 사이트를 실행하고 있으며 동일한 스크립트가 슬래시로 모든 것을 출력합니다.

코드를 건드릴 수 없다고 가정 해 봅시다.

PHP 구성에서 슬래시를 출력 할 수있는 VM이 ​​있습니까?

왜 이런 일이 발생합니까? OSX는 VM Hosting 컴퓨터에서 디렉토리 구분 기호를 사용하더라도 슬래시를 사용해야합니다.

편집 : 이것은 Kohana를 통해 파일이로드 된 경우에만 발생합니다. 내가 (아파치 또는 CLI) 직접 스크립트를 액세스하는 경우, 출력은 (슬래시)

답변

0

이 관련 질문의 종류 정확하지 : PHP directory separators, forcing forward slash; non-intrusive

가 제공한다는 대답은

, 아니 어떤 구성이 없음을 한 유형의 슬래시 만 사용하도록 변경하십시오.

왜 그런가? 나는 모를 것이다. 아마 그것은 Kohana의 유사 버그 일 것이다. 그리고 아마도 경로의 일부분을 결합하는 함수가 어떤 종류의 슬래시를 받아 들일지 너무 불가지론하기 때문에 부분적으로 PHP의 잘못이있을 수 있습니다.

이것이 중요한 이유가 있습니까? 한 가지 종류의 슬래시가 있어야만한다면 먼저 str_replace('\\', '/', __FILE__);을 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는이 기계를 리눅스 기계에서 정상적으로 작동시킨다. 그래서, 그것은 어떻게 든 올바르게 작동 할 수 있다고 제안합니다. 이제는 파일이 VM 호스트 OSX에 앉아서 리눅스에서만 마운트되었고 kohana는 알아 내지 못하거나 Kohana와 호환되지 않는 PHP 구성이기 때문에 알아야합니다. 이 시점에서 나는 전체 코드베이스 "검색 및 수정"이 될 것처럼 코드를 건드리지 않으려 고합니다. –

+0

또한 어딘가에 kohana가 어떤 종류의 슬래시를 사용할지 결정하고 OSX가 될 가능성을 고려하지 않고 일부 OS 검색을 수행하고 있음을 제안 할 수 있습니다. 또한 왜 중요한지 설명하면 좋은 해결 방법을 제안 할 수 있습니다. –

+0

Kohana가 창인지 아닌지 알아냅니다. 그리고 나는 그것이이 시스템을 윈도우가 아닌 것으로 설정한다는 것을 확인할 수 있습니다. 난 어떤 종류의 코드가 __FILE__ 동작을 덮어 쓸 수 있는지 궁금합니다. 나는 ini_set의 모든 사용법을 찾았고 이상한 것을 보지 못했다. 또한 네임 스페이스 경로 부분 사이에서만 백 슬래시를 반환하므로 네임 스페이스를 사용하여 무언가를해야한다고 생각했습니다. 많은 방해물이 있습니다. 하지만 웹 앱에 대한 테스트가 매우 제한되어있어 방해 할 필요가 없습니다. –