La aplicación PHP se rompe cuando se implementa con Git, funciona bien si se implementa a través de sftp

Tengo una aplicación PHP simple que desarrollé localmente en MAMP. Utilicé algunos packages de Composer. Funciona perfectamente en mi máquina local. Cuando despliego el website usando la aplicación Beanstalk (no AWS Beanstalk, me refiero al service de alojamiento e implementación de Beanstalk the Git) arroja un error una vez que se hace reference al nombre de la primera class en el código.

Fatal error: Class 'User' not found in /srv/www/example.com/public_html/utilities/authenticate.php on line 8 

Esta class es específica de una class del Modelo ActiveRecord para acceder a la database. En el código, se ve así:

 $user_row = User::find_by_email($theuser); 

Muy simple y funciona en mi entorno de desarrollo local. ActiveRecord es cargado automáticamente por Composer.

Luego intenté implementar la aplicación a través de sftp en mi Centos VPS y para mi sorpresa el error desapareció y la aplicación funciona como se esperaba. Mi mejor suposition fue que Beanstalk estaba de alguna manera corrompiendo la aplicación durante el deployment. Para probar esa teoría, configuré un repository de Git al descubierto en el server y usé un gancho de post-recepción para pagar el reintegro en la carpeta pública de Apache. Esto resultó en el mismo error que experimenté con Beanstalk. Parece que el problema está asociado con la implementación de git. Comprobé que los files tenían los permissions estándar 644 y que las carpetas están configuradas en 755. Apache posee la carpeta pública, por lo que la propiedad tampoco es el problema. Realmente no entiendo por qué ocurre esto. Cualquier sabiduría sobre el tema es muy apreciada.

Intenta verificar tu file .gitignore. Mejor aún si pega su contenido aquí. ¿Estás seguro de que no necesitas ejecutar la installation del compositor en el server después de la implementación?

Logré solucionar el problema. Fue una configuration incorrecta de ActiveRecord de mi parte. Mi class de model de "Usuario" residía en un file llamado "user.php". Esa es una convención de nomenclatura incorrecta cuando se usa ActiveRecord. Como el nombre de la class comienza con una letra mayúscula, también debe aparecer el nombre del file. Al cambiar el nombre del file a "User.php", ActiveRecord pudo ubicar la class correctamente. La parte extraña es que el nombramiento incorrecto no fue un problema cuando los documentos se colocaron en el server a través de sftp. Debo asumir que hay complejidades en el sistema de files CentOS que no entiendo completamente. Soy consciente de que, a diferencia de CentOS, OS X no tiene un sistema de files con distinción entre mayúsculas y minúsculas, y esa es la razón por la cual este error nunca ocurrió durante el desarrollo.