En pseudo código la respuesta es para cada proyecto individual mas o menos simple.

La necesidad real de seguridad sale a travpes de archivos que se actualizarán por FTP. La versión master no debe dar sus datos de acceso a ftp enos que sea de solo lectura, por l oque se sugiere que el ftp autoridad no maneje datos de conexion pero la receptora si puede darlos de su propio sistema.

Una vez considerado eso, Solo es necesario crear un validador de clave de sha1_file o su equivalente en el server autoridad, para revisar que sean los mismos.

Paso 1 : En el server nuevo Entrar el installer.php, que es el unico archivo existente. Ese luego actualizará inclusive el index.php
Paso 2 : Verificar quye haya conexión con el server autoridad. El dato del server autoridad incluso puede leerse de twitter. En casos extremos incluso claves de ftp temporales pueden pasarse por twitter.
Paso 3 : Revisa si existe updater.php que debería tener un nombre genérico como ePGTXbw87B96KuP77.php , pero para fines prácticos lo llamaeremos udpater.php
Paso 4 : Revisa con la autoridad (server viejo) que la versión de updater.php sea la misma en ambos servidores. Si no lo es, copiar el de la autoridad por FTP
Paso 5 : Update revisa la existencia y versión de cada archivo del poryecto, así como crear directorios para todos lo que se utilicen y checar que el chmod, por lo menos de directorios, sea el mismo.
Paso 6 : Verificar la versión de MYSQL y avisar
Paso 7 : Verificar si hay conexión con la base de datos local, y si no la hay, pedir datos para configuración
Paso 8 : Crear todas las tablas de datos sin informacion pero con llaves primarias y foráneas, si las hay (preferentemente deben estar definidas en código asi como el generador de índices tipo lo que se hacía en foxpro/clipper a mediados de los 90s)
Paso 9 : Crear / validar que ls tablas tengan los mismos campos. Probablemente un numero de versión de la estructura de base de datos, NO solamente versión del manejador de base de datos.
Paso 10 : Ideal pero para etapa posterior, crear un validador de la integridad referencial.
Paso 11 : Si todo esta ok, borrar solito el installer.php y dejar una función interna que actualice bajo demanda o automático haciendo lo mismo que hacia installer.php que a su ve el nuevo archivo debe actualizarse solo al buscar / detectar nueva versión

Una vez hecho esto, la respuesta es prueba y error obligando a que exista la información básica y creando pantallas temporales de captura o metiendo el dato default a mano.

Considerando que los nombres pueden ser unicode o extraños, el código de sha debe considerar encriptado simple y no texto llano, además es mejor si se enuentra en un archivo igual con nombre raro como JRnBxzYy272YqFPA.php pero lo llamaremos de momento verificador_de_sha.php y debe tener algo similar a :

suponiendo que base64_encode de index.php es aW5kZXgucGhw,

< ? php
IF ($_GET['filename']){
$filename=base64_decode($_GET['filename']);
$pass="file not exist|$filename";
if (file_exists($filename)==1) {
  $perms=fileperms($filename);
  $pass= $filename."|".sha1_file($filename)."|$perms";
}  
DIE ($pass);
}
? > 

y lo llamaríamos como : http://example.com/verificador_de_sha.php?filename=aW5kZXgucGhw obteniendo como respuesta un :

index.php|9bd598f9e8d4f889aa18bc733c2c95b64091a6d4|33188