ZF3开发模式VS生产模式

时间:2017-07-17 08:45:40

标签: php zend-framework zend-framework3

我在开发模式下使用ZF3和代码。我按照教程建议配置它:

composer development-enable

如果启用此模式,一切正常。如果我禁用它,我会收到数据库连接错误,如下所示:

  

连接错误:SQLSTATE [HY000] [1044]拒绝用户访问   '' @'本地主机'到数据库' xyz'

我仍然在同一台电脑上工作。

那可能是什么错误?

主要话题是,如何在开发和生产之间进行更改,composer语句是否也明确使用生产配置文件?

如果我通过作曲家更改了模式,我还需要做些什么?我真的很想,只要禁用就足够了:

composer development-disable

我是否还必须重命名开发配置文件?我们在谈论哪些文件?只是application-config.phpdevelopment-config.php

我应该在何处以及如何放置不同的数据库连接?我现在使用你上面看到的文件。

最后,如何更改生产服务器上的模式?我现在刚刚在我的开发系统上禁用了该模式,然后上传了漏洞项目。之后我只上传更改的文件。

EDIT1:这里还有一个screenot,我在哪些文件夹中使用哪些配置文件: Screenshot config files and folders

在我的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(用于开发模式)。

2 个答案:

答案 0 :(得分:4)

启用/禁用该模式与拥有/不拥有config/development.config.php文件相同。

如果您look closely,您会发现开发模式会禁用缓存。

您的问题是已创建缓存文件(非开发模式),而配置对环境来说并不合适。按照config/application.config.php中的配置删除data/cache/application.config.cacheapplication.module.cache

答案 1 :(得分:0)

如果您使用development-mode enable开发),则表示config_cache_enabled设置为false。因此,moduleservicescontrollers等新配置将按ZF3加载,因为ZF3无法从cache读取配置(在data/cache/*)。

如果会缓存development-mode disable生产)配置,那么当您使用上面提到的新配置部署代码时,ZF3将无法读取。因为ZF3仍在cache中阅读配置。

我在部署到Production时通常会删除缓存。这是我用于部署

的示例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