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

추천 게시물

시놀로지의 남는 스토리지 대여로 코인 채굴하기

 시놀로지 나스를 구축했는데 하드 용량은 남고 어짜피 켜져있는 서버고 이걸로 코인이나 벌어볼까 하시는분 참고하세요.. 현재 저는 사용한지 6-7개월 정도 되었고. 월 16 ~ 40 USD 정도 들어오는것 같애요.(글쓰는 시점 현재 2023년 7월 기...