"PHP_SELF"
문서 루트와 관련된 현재 실행 중인 스크립트의 파일 이름입니다. 예를 들어, URL 주소가 http://www.jb51.net/test.php/foo.bar인 스크립트에서 $_SERVER['PHP_SELF']를 사용하면 /test.php/foo.bar가 됩니다. __FILE__ 상수에는 현재(즉, 포함하는) 파일의 절대 경로와 파일 이름이 포함됩니다.
"SCRIPT_NAME"
현재 스크립트의 경로가 포함되어 있습니다. 이는 페이지가 자신을 가리켜야 할 때 유용합니다. __FILE__에는 현재 파일(예: 포함 파일)의 절대 경로와 파일 이름이 포함됩니다.
주요 이유는 다음과 같습니다: $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']
다음과 같은 더 나은 이유를 찾으세요.
오늘 Dreamhost에서 PHP 프로그램을 사용하면 연결된 주소에 별도의 cgi 시스템이 있을 것이라는 것을 알았으나 프로그램 구성에는 문제가 없었습니다. 정보를 확인한 결과 SCRIPT_NAME과 PHP_SELF의 차이로 인해 문제가 발생한 것으로 나타났습니다.
대부분의 PHP는 CGI 모드에서 실행되지 않기 때문에 일반적으로 이 시스템에서 $_SERVER['SCRIPT_NAME'] 및 $_SERVER['PHP_SELF']를 테스트하면 아무런 차이가 없을 것입니다.
그러나 DreamHost의 PHP는 CGI 모드에서 실행되므로 둘 사이에는 분명한 차이점이 있습니다.
echo $_SERVER['SCRIPT_NAME']; // (/cgi-system/php.cgi)
echo $_SERVER['PHP_SELF'] // (/admin/test.php)
에서 http://lists.nyphp.org/pipermail/talk/2005-July/015339.html에서 메모를 발견했습니다. 외국인이 말했다.
SCRIPT_NAME은 이 스레드에서 언급된 모든 문제를
해결합니다. 사용자가 추가로 추가할 수 있는 것은 스크립트 이름뿐이며
PHP_SELF에는 추가 가비지가 포함되므로
해결책이 있습니다. 안전을 위해
PHP_SELF에서 쓰레기를 제거하는 것과 관련된 이 스레드에서는 실제로
포인트가 누락되었습니다. 대신에 FORM ACTION=""을 사용하지 마세요. 사양, 브라우저가 무엇을 하는지는 정의되어 있지 않으므로
현재 브라우저에서는 작동하더라도 향후 브라우저에서는 작동하지 않을 수 있습니다.
위 내용은 Windows 2003 Server의 내용을 포함하여 Windows 2003 Server PHP의 $_SERVER[PHP_SELF]와 $_SERVER[SCRIPT_NAME]의 차이점을 소개하고 있으며 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.