2017-07-17 1 views
1

J'utilise ZF3 et le code en mode développement. Je l'ai configuré comme le tutoriel le suggère:ZF3 Mode de développement VS Mode de production

composer development-enable 

Tout fonctionne correctement si ce mode est activé. Si je le désactiver, je reçois une erreur de connexion de base de données, comme celui-ci:

Connect Error: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'xyz'

Je travaille toujours sur le même ordinateur.

Alors, quelle erreur cela pourrait-il être?

Le sujet principal serait, comment est la bonne façon de changer entre le développement et la production, est-ce que l'instruction du compositeur clarifie aussi l'utilisation des fichiers de configuration de production?

Si j'ai changé de mode via composer, que dois-je faire de plus? Je pensais vraiment blueeyed, il suffit de désactiver simplement:

composer development-disable 

Dois-je renommer les fichiers de configuration de développement aussi? De quels fichiers parlons-nous? Est-ce juste application-config.php et development-config.php?

Où et comment dois-je placer les différentes connexions de base de données? J'utilise maintenant les fichiers que vous voyez ci-dessus.

Et enfin, comment changer le mode sur le serveur de production? Je viens maintenant de désactiver le mode sur mon système de développement et ensuite téléchargé le projet de trou. Ensuite, je ne télécharge que les fichiers modifiés.

EDIT1: un ici supplémentaire screensot, les fichiers de configuration que j'utilise dans les dossiers qui: Screenshot config files and folders

Dans mon application.config.php les liens de configuration à:

'config_glob_paths' => [ 
      realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php', 
     ], 

et dans mon développement. config.php les liens de configuration à

'module_listener_options' => [ 
     'config_glob_paths' => [realpath(__DIR__) . '/autoload/{,*.}{global,local}-development.php'], 
     'config_cache_enabled' => false, 
     'module_map_cache_enabled' => false, 
    ], 

pour moi il semble correct. Ma connexion de base de données est dans local.php (pour la production) et dans local-development.php (pour le mode de développement).

Répondre

3

L'activation/désactivation du mode est identique à celle du fichier config/development.config.php.

Si vous look closely, vous verrez que le mode de développement désactive le cache.

Votre problème est que les fichiers de cache ont été créés (mode non dev) alors que la configuration n'était pas bonne pour l'environnement. Supprimez data/cache/application.config.cache et application.module.cache comme configuré dans config/application.config.php.

+0

merci, c'était mon problème de compréhension, maintenant tout va bien –

0

Si vous utilisez development-mode enable (développement) cela signifie config_cache_enabled ensemble à false. Donc, votre nouvelle configuration comme module, services, controllers, etc. sera chargée par ZF3, car ZF3 ne lira pas la configuration de cache (dans data/cache/*).

Si development-mode disable (production) configuration sera mise en mémoire cache, de sorte que lorsque vous déployez votre code avec la nouvelle configuration comme je mentionne ci-dessus, ne sera pas lu par ZF3. Parce que ZF3 lisent toujours la configuration dans cache.

Je supprime généralement le cache lors du déploiement en production. Ici l'échantillon shell script j'utilisé pour déployer

#/bin/bash 
rsync --exclude data --exclude .git -av temp_example.com/. /var/www/example.com/. 
echo -e "Removing cache..." 
rm -f /var/www/example.com/data/cache/*.php 

Ainsi, la clé principale, si vous avez utilisé development-mode disable, il suffit de retirer le cache après le déploiement du code.