2017-07-17 117 views
1

我在開發模式下使用ZF3和代碼。我配置它像教程建議:ZF3開發模式VS生產模式

composer development-enable 

所以一切工作正常,如果這種模式啓用。如果我禁用它,我得到一個數據庫連接錯誤,像這樣的:

Connect Error: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'xyz'

我仍然在同一臺計算機上運行。

那麼可能是什麼錯誤?

主要議題是,如何在開發和生產之間切換正確的方式,作曲家聲明是否也明確地使用生產配置文件?

如果我通過作曲家改變了模式,我還需要做些什麼?我真的藍牙認爲,這將是足夠的,只是禁用:

composer development-disable 

我還必須重命名開發配置文件嗎?我們談論哪些文件?它只是application-config.phpdevelopment-config.php

我應該在哪裏以及如何放置不同的數據庫連接?我現在使用上面看到的文件。

最後,如何更改生產服務器上的模式?我現在只是禁用了我的開發系統的模式,然後上傳了洞項目。之後我只上傳更改後的文件。

EDIT1:這裏附加一個screensot,我在其中的文件夾使用的配置文件: Screenshot config files and folders

在我application.config.php配置鏈接:

'config_glob_paths' => [ 
      realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php', 
     ], 

,並在我的發展。 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(用於開發模式)。

回答

3

啓用/禁用模式與具有/不具有config/development.config.php文件相同。

如果你look closely,你會看到開發模式禁用緩存。

您的問題是緩存文件已創建(非開發模式),而配置不適用於環境。按照config/application.config.php中的配置刪除data/cache/application.config.cacheapplication.module.cache

+0

謝謝,那是我的理解問題,現在一切都很好 –

0

如果您使用development-mode enable開發)它意味着config_cache_enabled設置爲false。因此,您的新配置(如moduleservices,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部署代碼之後。