Hola usuario, sabemos que la variable $_SERVER['PHP_SELF'] devuelve lo siguiente:
Cita: El nombre del archivo de script ejecutándose actualmente, relativa al directorio raíz de documentos del servidor. Por ejemplo, el valor de $_SERVER['PHP_SELF'] en un script ejecutado en la dirección
http://example.com/test.php/foo.bar será /test.php/foo.bar. La constante __FILE__ contiene la ruta completa del fichero actual, incluyendo el nombre del archivo. Si PHP se está ejecutando como un proceso de línea de comando, esta variable es el nombre del script desde PHP 4.3.0. En anteriores versiones no estaba disponible.
No devuelve la URL actual, solo el nombre del script como bien dice la documentación.
Eso explicaría el porque de tus problemas, ¿ya está claro?
PDTA: creo que tu nickname dice mucho de ti, "pereza" por creer lo que quieras y no entender lo que significa gracias al manual...