2019년 1월 6일

PHP 에서 $_SERVER(서버변수) PHP_SELF SCRIPT_NAME REQUEST_URI 차이?

홈페이지 루트에 test.php 를 접근했을 경우 아래와 같이 똑같은 변수가 있다.
    $_SERVER['REQUEST_URI'] => /test.php
    $_SERVER['SCRIPT_NAME'] => /test.php
    $_SERVER['PHP_SELF'] => /test.php
 SCRIPT_NAME  과 PHP_SELF 는 기본적으로 같다고 보면 좋을 것 같다.

Example 1. 요청된 URL 이 파일이름을 포함할때다음과 같을때:
http://example.com/test.php/foo/bar
[REQUEST_URI] => /test.php/foo/bar
[PHP_SELF] => /test.php/foo/bar
[SCRIPT_NAME] => /test.php


Example 2. REQUEST_URI 는 파라미터를 포함하고, SCRIPT_NAME, PHP_SELF는 파라미터를 포함하지 않는다.:
http://example.com/test.php?foo=bar
[REQUEST_URI] => /test.php?foo=bar
[PHP_SELF] => /test.php
[SCRIPT_NAME] => /test.php


Example 3. 서버측 리다이렉션이 동작했을 때 (for example mod_rewrite on apache):
웹브라우저 : http://example.com/test.php
실제서버경로 : /htdocs/test2.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /test2.php
[SCRIPT_NAME] => /test2.php


Example 4. 브라우저에서 없는URL을 요청할 경우 404 Error 페이지를 보여줄때 REQUEST_URI 는 클라이언트의 요청주소를 알수있다.
Using apache directive ErrorDocument 404 /404error.php
http://example.com/test.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /404error.php
[SCRIPT_NAME] => /404error.php


** 관련 레퍼런스 : https://stackoverflow.com/a/326331

댓글 없음:

댓글 쓰기

추천 게시물

시놀로지 NAS 외부 접속이 안될떄 점검 항목(최종본)

 1. DNS 서버 주소 확인   ☞ DSM의 제어판>네트워크>일반  수동으로 DNS 서버 구성      기본 DNS는 8.8.8.8  대체 DNS는 8.8.4.4 로 설정한다. 2. LAN 포트를 2개 이상 사용할 경우 기본 게이트웨이 확...