2011-08-29 2 views
1

내 웹 사이트를 배포하는 데 문제가 있습니다. Windows에서 WAMP를 사용하여 구축했으며 지금은 Linux에 배포하고 있습니다.절대 경로로 PHP에 파일을 포함하는 데 문제가 있습니다.

req.php

echo "This is req<br>"; 
ini_set("include_path", "/home/clash/public_html/:".get_include_path()); 
require "/req1.php"; 

req1.php

echo "This is req1"; 

그러나 메시지와 함께 프로덕션 환경에서 실패 :이 같은

코드는 윈도우에서 작동

Warning: require(/req1.php) [function.require]: failed to open stream: No such file or directory in /home/clash/public_html/req.php on line 5

Fatal error: require() [function.require]: Failed opening required '/req1.php' (include_path='/home/clash/public_html/:.:/usr/lib/php:/usr/local/lib/php') in /home/clash/public_html/req.php on line 5

ini_set의 경로는 서버 파일 시스템의 실제 웹 사이트 위치 경로입니다.

나는 절대 경로가 내가 사용하는 라이브러리로 사용하는 것을 다소 피한다.

나는 여기서 아주 간단한 것을 놓치고 있다고 확신하지만, 나는 무엇을 알아낼 수 없다.

감사합니다.

답변

2

Linux의 경우 /은 Windows의 C:\과 비슷한 파일 시스템의 루트입니다. 선행 /을 제거하면 예상대로 작동합니다.

+0

내가 말했듯이, 내가 사용하고있는 프레임 워크가 이러한 종류의 URL을 생성하기 때문에 남겨 두지 않는 옵션입니다. 거기에 자동으로 app 경로를 prepend하는 방법이 있습니까? – Corvin

0

하드 코딩 된 경로 구분 기호를 PATH_SEPARATOR 상수로 바꿀 수 있습니다. 그렇게하면 include_path에 대한 가치가 교차 플랫폼이라는 것을 확인할 수 있습니다.

관련 문제