Estoy trabajando en un proyecto utilizando Silex. En un archivo en particular, he agregado una declaración use
para que el autocargador incluya un archivo php particular. Más adelante en el archivo, uso esa clase. Todo está bien en el servidor de desarrollo, pero cuando paso a la producción, recibo un mensaje de Fatal error: Class not found
. Editar: Ambos servidores ahora usan PHP 5.4.4.Error de clase no encontrada solo en el servidor de producción
¿Hay algún tipo de problemas específicos de instalación que puedan estar causando esto? Puedo confirmar que los dos archivos de carga automática del espacio de nombres generados por el compositor son los mismos.
Sólo por el bien de minuciosidad, aquí es la declaración incluyen:
use Instaphp;
Aquí está el uso de la clase más adelante en el código:
$app['instaphp'] = $app->share(function() use ($app) {
if($app['tagframe.instagram_token'] === null) {
return Instaphp\Instaphp::Instance();
} else {
return Instaphp\Instaphp::Instance($app['tagframe.instagram_token']);
}
});
$app['instaphp.config'] = $app->share(function() use ($app) {
return Instaphp\Config::Instance();
});
Aquí es el error exacto:
Fatal error: Class 'Instaphp\Config' not found in /var/www/silexsandbox/src/TagFrame/Silex/TagFrameServiceProvider.php on line 89
Actualización: Debo añadir que no he experimentado tales errores en ningún otro lugar en el l arge code base en la que estoy trabajando, así que sé que no es tan simple como que TODOS los espacios de nombres no funcionen.
Puede sonar trivial, pero ¿está seguro de haber instalado los proveedores (o actualizado después del último cambio) en el servidor de producción? – Maerlyn
¿Está ejecutando PHP-FPM? Quizás con APC habilitado? ¿Puedes intentar recargar a los trabajadores de FPM? – igorw