Also mir fällt da spontan die Funktion getenv() ein.
Um z.B den Servernamen rauszubekommen benutzt du getenv("SERVER_NAME"). $SERVER_NAME funktioniert zwar auch, aber nicht immer. Deshalb lieber mit getenv() in einer Variable am Anfang des Skripts speichern. Wie die Variablen (SERVER_NAME) heißen, siehst du in der Ausgabe der Funktion PHPinfo. Für das Verzeichnis kann man z.B. PATH_INFO nehmen, aber ich weiß nicht, ob andere Variablen vielleicht korrekter oder besser sind (ausprobieren).
Wenn du die beiden hier genannten Variablen jetzt zusammenfügst, hast du die komplette URL.
Das war jetzt aber komplett serverseitig. Wenn du wissen willst, welche URL der Client angegeben hat, müsste das wohl über den Header gehen, wie xafford schon sagte (hier muss ich passen, ich hab keine Ahnung davon).
viel Glück
Armageddon