Sto lavorando a un progetto utilizzando Silex. In un file particolare, ho aggiunto un'istruzione use
per fare in modo che il caricatore automatico includa un particolare file php. Più avanti nel file, io uso quella classe. Tutto va bene sul server di sviluppo, ma quando passo alla produzione, ottengo un messaggio Fatal error: Class not found
. Modifica: entrambi i server ora utilizzano PHP 5.4.4.Errore di classe non trovato solo sul server di produzione
Sono presenti problemi di installazione specifici che potrebbero causare questo? Posso confermare che entrambi i file autoload generati dallo spazio dei nomi generati dal compositore sono gli stessi.
Solo per ragioni di completezza, ecco l'istruzione include:
use Instaphp;
Ecco l'utilizzo della classe più avanti nel codice:
$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();
});
Ecco l'errore esatto:
Fatal error: Class 'Instaphp\Config' not found in /var/www/silexsandbox/src/TagFrame/Silex/TagFrameServiceProvider.php on line 89
Aggiornamento: Devo aggiungere che non ho riscontrato errori di questo tipo in nessun altro sto lavorando a codice base, quindi so che non è così semplice come TUTTI gli spazi dei nomi non funzionano.
Può sembrare banale, ma siete sicuri di aver installato i fornitori (o aggiornato dopo l'ultima modifica) sul server di produzione? – Maerlyn
Stai eseguendo PHP-FPM? Forse con APC abilitato? Puoi provare a ricaricare i lavoratori della FPM? – igorw