CGI y PHP siguen la misma filosofía: el usuario hace una petición al servidor web. Éste, al ver que es un CGI lo ejecuta y espera su resultado, que lo devolverá al cliente. Mientras que si es un PHP, quizás lo ejecute igual que el CGI o, lo más normal, el motor PHP estará ya arrancado por el servidor web, por lo que solo tendrá que indicarle qué página php tiene que interpretar, para luego entregar al cliente.
Tanto CGI como PHP, sus resultados, han de ser un fichero que el cliente web esté esperando (una página web, un fichero, etc.).
Quizás lo que más les distinguía era la forma de generar la salida. Mientras que los CGI solían integrar parte del código HTML dentro del código del programa, en PHP se integraba el código del programa dentro del código HTML. Visto esto, tanto unos como otros tienen entonces el problema de mezclar la vista (HTML, CSS, Javascript) con el controlador (el código), y da lugar a programas y páginas a veces horriblemente escritas y sobre todo muy difíciles de mantener.
La tendencia hoy en día es separar la vista del controlador (y del modelo si existe). Para ello, se usan técnicas de plantillas.
Los CGI no son "viejos". El lenguaje C tiene más de 30 años y no se puede decir que sea "viejo" (en sentido despectivo). Y hay muchos CGI escritos en C.
¿Y si te digo que se pueden escribir CGI en PHP? Realmente, CGI es un protocolo, mientras que PHP es un lenguaje. Son cosas distintas. Pues bien, se puede colocar el motor PHP en el directorio de los cgi y se pueden crear CGI con ese lenguaje.
Yo no veo mucha ventaja en usar uno u otro. En PHP dispones de un gigantesco motor con miles de funciones, mientras que en CGI se suele hacer el programa para que use de las librerías que realmente necesita.
Incluso sus mayores desventajas, la continua carga y ejecución de ficheros en cada petición tienen la misma solución: en PHP hay motores que "cachean" el resultado para no tener que repetirlo después. En CGI también existe algo parecido, como por ejemplo, mod_perl, que ejecuta los CGI de un 400% a un 2000% más rápido (porque se ahorra el tiempo de compilación).
Si aprendes PHP, te servirá en un gran porcentaje para hacer páginas web. Si aprendes un lenguaje para CGI, te servirá para más cosas que Web.
Yo, como soy perlero, en lugar de usar PHP, usaría cualquiera de las muchas alternativas que existen. Por ejemplo,
PLP o Perl embebido. La forma de programar será la misma que en PHP.