다른 서버 환경에서 PHP $_SERVER['DOCUMENT_ROOT']
수퍼 글로벌은 때로 슬래시를 갖지만 때로는 그렇지 않습니다. 이 문제는 Apache DocumentRoot
가 httpd.conf
파일에 정의 된 방식과 직접 관련이 있다고 생각했을 것입니다 .
즉, httpd.conf
후행 슬래시가 없으면 다음과 같이 생각했습니다 .
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
그런 다음 / var / www / live / current를echo $_SERVER['DOCUMENT_ROOT']
제공해야합니다
그리고 httpd.conf
슬래시가 포함 된 경우 :
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
다음 echo $_SERVER['DOCUMENT_ROOT']
해야주고 는 / var / www /에서 라이브 / 현재 /
이것은 Ubuntu 10.04의 경우이지만 RHEL 5.5에서는 $_SERVER['DOCUMENT_ROOT']
Apache에 아무것도 정의되지 않은 경우에도 슬래시가 추가됩니다 .
왜 이런 일이 일어나는지 아십니까? 누락 된 구성 매개 변수가 있습니까?
참고로 :
- RHEL의 PHP 5.3.3 (문제가 발생 함) : PHP 5.3.3 (cli) (내장 : 2010 년 7 월 23 일 16:26:53)
- Ubuntu의 PHP 버전 (문제 없음) : Suhosin-Patch (cli)가 포함 된 PHP 5.3.2-1ubuntu4.2 (빌드 : 2010 년 5 월 13 일 20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
. 여러 개의 슬래시와 후행 슬래시를 모두 자동으로 제거합니다. 항상 후행 슬래시를 원하면 위의 호출 결과에 슬래시를 연결하십시오realpath()
. 안에는 없습니다.