ZF3开发模式VS生产模式
ZF3 Development Mode VS Production Mode
我在开发模式下使用ZF3和代码。我按照教程的建议配置它:
composer development-enable
因此,如果启用此模式,一切正常。如果我禁用它,我会收到一个数据库连接错误,如下所示:
Connect Error: SQLSTATE[HY000] [1044] Access denied for user
''@'localhost' to database 'xyz'
我仍然在同一台计算机上工作。
那么它可能是什么错误?
主题是,如何在开发和生产之间进行正确的转换,作曲家声明是否也明确使用生产配置文件?
如果我通过作曲家改变了模式,我还需要做什么?我真的很蓝眼睛想,只要禁用就足够了:
composer development-disable
我还必须重命名开发配置文件吗?我们谈论哪些文件?只是 application-config.php
和 development-config.php
吗?
我应该在哪里以及如何放置不同的数据库连接?我现在使用你在上面看到的文件。
最后,如何在生产服务器上更改模式?我现在只是在我的开发系统上禁用了该模式,然后上传了 hole 项目。之后我只上传修改过的文件。
EDIT1:这里附加一个屏幕截图,我在哪些文件夹中使用了哪些配置文件:
在我的 application.config.php 配置链接中:
'config_glob_paths' => [
realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php',
],
在我的 development.config.php 中,配置链接到
'module_listener_options' => [
'config_glob_paths' => [realpath(__DIR__) . '/autoload/{,*.}{global,local}-development.php'],
'config_cache_enabled' => false,
'module_map_cache_enabled' => false,
],
对我来说它看起来是正确的。我的数据库连接处于 local.php
(用于生产)和 local-development.php
(用于开发模式)。
Enabling/Disabling 模式与 having/not 具有 config/development.config.php
文件的模式相同。
如果你look closely,你会看到开发模式禁用了缓存。
您的问题是缓存文件已创建(非开发模式),而配置不适合环境。按照 config/application.config.php
.
中的配置删除 data/cache/application.config.cache
和 application.module.cache
如果您使用 development-mode enable
(开发),则意味着 config_cache_enabled
设置为 false
。所以你的新配置如 module
、services
、controllers
等将由 ZF3
加载,因为 ZF3
不会从 cache
读取配置(在 data/cache/*
)。
If development-mode disable
(Production) 配置将被缓存,所以当你使用我上面提到的新配置部署代码时,将不会被 [=17 读取=].因为ZF3
还是读取了cache
中的配置。
我通常在部署到生产环境时删除缓存。这里是我用于部署的示例 shell script
#/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
所以,主键,如果你使用 development-mode disable
,只需在部署代码后删除 cache
。
我在开发模式下使用ZF3和代码。我按照教程的建议配置它:
composer development-enable
因此,如果启用此模式,一切正常。如果我禁用它,我会收到一个数据库连接错误,如下所示:
Connect Error: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'xyz'
我仍然在同一台计算机上工作。
那么它可能是什么错误?
主题是,如何在开发和生产之间进行正确的转换,作曲家声明是否也明确使用生产配置文件?
如果我通过作曲家改变了模式,我还需要做什么?我真的很蓝眼睛想,只要禁用就足够了:
composer development-disable
我还必须重命名开发配置文件吗?我们谈论哪些文件?只是 application-config.php
和 development-config.php
吗?
我应该在哪里以及如何放置不同的数据库连接?我现在使用你在上面看到的文件。
最后,如何在生产服务器上更改模式?我现在只是在我的开发系统上禁用了该模式,然后上传了 hole 项目。之后我只上传修改过的文件。
EDIT1:这里附加一个屏幕截图,我在哪些文件夹中使用了哪些配置文件:
在我的 application.config.php 配置链接中:
'config_glob_paths' => [
realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php',
],
在我的 development.config.php 中,配置链接到
'module_listener_options' => [
'config_glob_paths' => [realpath(__DIR__) . '/autoload/{,*.}{global,local}-development.php'],
'config_cache_enabled' => false,
'module_map_cache_enabled' => false,
],
对我来说它看起来是正确的。我的数据库连接处于 local.php
(用于生产)和 local-development.php
(用于开发模式)。
Enabling/Disabling 模式与 having/not 具有 config/development.config.php
文件的模式相同。
如果你look closely,你会看到开发模式禁用了缓存。
您的问题是缓存文件已创建(非开发模式),而配置不适合环境。按照 config/application.config.php
.
data/cache/application.config.cache
和 application.module.cache
如果您使用 development-mode enable
(开发),则意味着 config_cache_enabled
设置为 false
。所以你的新配置如 module
、services
、controllers
等将由 ZF3
加载,因为 ZF3
不会从 cache
读取配置(在 data/cache/*
)。
If development-mode disable
(Production) 配置将被缓存,所以当你使用我上面提到的新配置部署代码时,将不会被 [=17 读取=].因为ZF3
还是读取了cache
中的配置。
我通常在部署到生产环境时删除缓存。这里是我用于部署的示例 shell script
#/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
所以,主键,如果你使用 development-mode disable
,只需在部署代码后删除 cache
。