J'ai ce qui suit sur mon htaccess.
SetEnv APPLICATION_ENV development
Lorsque je passe ce fichier à prodution, je le change en:
SetEnv APPLICATION_ENV production
Cette
développement
et
production
sont définis sur Zend Framework application.ini correct?
Comment Zend et Apache communiquent-ils ici? Comment Zend connaît-il cette instruction htaccess?
Merci.
SetEnv
, utilisé dans la configuration d'Apache (que ce soit un fichier .htaccess ou un VirtualHost), définit une variable d'environnement.
Depuis PHP, vous pouvez lire les variables d'environnement soit:
Jetant un œil à la index.php
in Zend Frameworks QuickStart , vous verrez qu'il utilise cette variable d'environnement pour définir la PHP constante appelée APPLICATION_ENV
:
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
Et cette constante est utilisée plus tard pour initialiser l'application:
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
Le flux de communication, comme vous l'appelez, est le suivant:
Si tu utilises
Production SetEnv APPLICATION_ENV
dans votre .htaccess, l'environnement que vous y définissez sera utilisé. Pourquoi?
Le morceau de code suivant de votre index.php ne définit pas la constante, si elle a déjà été définie, ce qui est le cas, si vous utilisez SetEnv dans votre .htaccess.
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
Si votre .htaccess ne définit pas la constante, la valeur fournie dans l'index.php sera utilisée. Si j'étais vous, je le garderais toujours synchronisé. Parce que vous pouvez faire des erreurs comme oublier de définir AllowOverride pour votre vhost, ce qui entraînerait une situation où l'environnement est défini par index.php même si le .htaccess est présent.