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.phpdevelopment-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.cacheapplication.module.cache

如果您使用 development-mode enable开发),则意味着 config_cache_enabled 设置为 false。所以你的新配置如 moduleservicescontrollers 等将由 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