我在开发模式下使用ZF3和代码。我按照教程建议配置它:
composer development-enable
如果启用此模式,一切正常。如果我禁用它,我会收到数据库连接错误,如下所示:
连接错误:SQLSTATE [HY000] [1044]拒绝用户访问 '' @'本地主机'到数据库' xyz'
我仍然在同一台电脑上工作。
那可能是什么错误?
主要话题是,如何在开发和生产之间进行更改,composer语句是否也明确使用生产配置文件?
如果我通过作曲家更改了模式,我还需要做些什么?我真的很想,只要禁用就足够了:
composer development-disable
我是否还必须重命名开发配置文件?我们在谈论哪些文件?只是application-config.php
和development-config.php
?
我应该在何处以及如何放置不同的数据库连接?我现在使用你上面看到的文件。
最后,如何更改生产服务器上的模式?我现在刚刚在我的开发系统上禁用了该模式,然后上传了漏洞项目。之后我只上传更改的文件。
EDIT1:这里还有一个screenot,我在哪些文件夹中使用哪些配置文件:
在我的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
(用于开发模式)。
答案 0 :(得分:4)
启用/禁用该模式与拥有/不拥有config/development.config.php
文件相同。
如果您look closely,您会发现开发模式会禁用缓存。
您的问题是已创建缓存文件(非开发模式),而配置对环境来说并不合适。按照config/application.config.php
中的配置删除data/cache/application.config.cache
和application.module.cache
。
答案 1 :(得分:0)
如果您使用development-mode enable
(开发),则表示config_cache_enabled
设置为false
。因此,module
,services
,controllers
等新配置将按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
。