SetEnv APPLICATION_ENV development -.htaccess взаимодействует с Zend Framework?
У меня есть следующее на моем htaccess.
SetEnv APPLICATION_ENV development
Когда я передаю этот файл в файл, я изменил его на:
SetEnv APPLICATION_ENV production
Это
развитие
и
производство
установлены на Zend Framework application.ini правильно?
Как Zend и Apache общаются здесь? Как Zend знает об этой инструкции htaccess?
Спасибо.
Ответы
Ответ 1
SetEnv
, используемый в конфигурации Apache (будь то файл .htaccess или VirtualHost), определяет переменную среды.
Из PHP вы также можете прочитать переменные среды:
Взглянув на данный index.php
в Zend Frameworks QuickStart, вы увидите, что он использует эту переменную среды, определяющую константу PHP, называемую APPLICATION_ENV
:
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
И эта константа позже используется для инициализации приложения:
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
Ответ 2
Поток коммуникации, как вы его называете, следующий:
Если вы используете
SetEnv APPLICATION_ENV
в вашем .htaccess, будет использоваться среда, которую вы там установили. Почему?
Следующий фрагмент кода из вашего index.php не определяет константу, если она уже определена, что имеет место, если вы используете SetEnv в своем .htaccess.
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
Если ваш .htaccess не определяет константу, будет использоваться значение, указанное в index.php. Если бы я был вами, я бы все равно синхронизировал его. Поскольку вы можете ошибаться, например, забыть установить AllowOverride для своего vhost, что приведет к ситуации, когда среда будет установлена index.php, даже если присутствует .htaccess.