virtual() ist dem Server also unbekannt. Ich vermute, dies liegt daran, dass PHP auf dem Server im CGI-Modus ausgeführt wird.
virtual() startet im Prinzip eine HTTP-Anfrage, allerdings wird diese direkt in den Apache-Server eingeschleust, ohne Umweg über die Netzwerkschnittstelle. Auf diese Interna hast du keinen Zugriff, wenn PHP via CGI ausgeführt wird; hinter der CGI-Schnittstelle verbirgt sich (fast) nichts anderes als das Ausführen eines beliebigen externen Programms – und das ist dann auch deine Lösung:
Gibt es eine andere Möglichkeit, CGI in PHP einzubinden, wenn PHP im CGI-Modus läuft?
Rufe das Skript einfach so auf, wie es der Webserver auch macht: Als Programm. Die nötigen Funktionen findest du unter http://de.php.net/manual/en/book.exec.php, exec() und shell_exec() müssten deine Freunde sein.
Beachte, dass die Ausgabe des Skriptes mit dem HTTP-Kopf beginnt (mindestens die Zeile Content-Type, eventuell mehr), die eigentlichen Daten erscheinen nach der ersten Leerzeile.