$ _SERVER es una de las variables globales de PHP, denominada Superglobales, que contiene información sobre servidores y entornos de ejecución. Estas son variables predefinidas para que siempre estén accesibles desde cualquier clase, función o archivo.
Las entradas aquí son reconocidas por los servidores web, pero no hay garantía de que cada servidor web reconozca cada Superglobal. Estas tres matrices PHP $ _SERVER se comportan de manera similar: devuelven información sobre el archivo en uso. Cuando se exponen a diferentes escenarios, en algunos casos se comportan de manera diferente. Estos ejemplos pueden ayudarlo a decidir cuál es el mejor para lo que necesita. Una lista completa de matrices $ _SERVER está disponible en el sitio web de PHP.
PHP_SELF es el nombre del script que se está ejecutando actualmente.
Cuando usa $ _SERVER ['PHP_SELF'], devuelve el nombre de archivo /example/index.php con y sin el nombre de archivo escrito en la URL. Cuando las variables se agregan al final, se truncan y nuevamente se devuelve /example/index.php. La única versión que produjo un resultado diferente tiene directorios agregados después del nombre del archivo. En ese caso, devolvió esos directorios.
REQUEST_URI se refiere al URI dado para acceder a una página.
Todos estos ejemplos devolvieron exactamente lo que se ingresó para la URL. Devolvió un simple /, el nombre del archivo, las variables y los directorios adjuntos, todo tal como fueron ingresados.
SCRIPT_NAME es la ruta del script actual. Esto es útil para páginas que necesitan apuntar a sí mismas.
Todos los casos aquí solo devolvieron el nombre de archivo /example/index.php independientemente de si se escribió, no se escribió o se le agregó algo..