Zend Framework 2:在生产环境中禁用模块

时间:2013-05-04 10:24:33

标签: php zend-framework2 environment

好的,这是问题:

我的Zend Framework 2应用程序中有一个模块,我希望不包含在生产中。因此,我在名为config/autoload的{​​{1}}内创建了一个文件,其中包含以下内容:

local.php

'modules' => array( 'Application', 'My_Local_Module', ), 包含:

config/application.config.php

当我尝试访问URL中的模块时,会返回'modules' => array( 'Application', ), 。但是,当我在404文件中设置modules时,模块会正确显示。环境变量设置为application.config.php

2 个答案:

答案 0 :(得分:1)

在index.php中添加以下行:

<?php

// ...

// Get the current environment (development, testing, staging, production, ...)
$env = strtolower(getenv('APPLICATION_ENV'));

// Assume production if environment not defined
if (empty($env)) {
    $env = 'production';
}

// Get the default config file
$config = require 'config/application.config.php';

// Check if the environment config file exists and merge it with the default
$env_config_file = 'config/application.' . $env . '.config.php';
if (is_readable($env_config_file)) {
    $config = array_merge_recursive($config, require $env_config_file);
}

// Run the application!
Zend\Mvc\Application::init($config)->run();

然后为每个环境创建不同的配置文件。

<强> application.config.php:

<?php

return array(
    'modules' => array(
        'Application'
    ),
    'module_listener_options' => array(
        'config_glob_paths' => array(
            'config/autoload/{,*.}{global,local}.php'
        ),
        'module_paths' => array(
            './module',
            './vendor'
        )
    )
);

<强> application.development.config.php:

<?php

return array(
    'modules' => array(
        'ZendDeveloperTools'
    )
);

<强> application.production.config.php:

<?php

return array(
    'module_listener_options' => array(
        'config_cache_enabled' => true,
        'module_map_cache_enabled' => true,
        'cache_dir' => 'data/cache/'
    )
);

答案 1 :(得分:0)

你必须枚举application.config.php中的所有模块,所以配置看起来应该是这样的:

$modules = array (
    'Application'
);

if (IS_LOCAL_DOMAIN)
{
    $modules [] = "My_Local_Module";
}

return array(
    'modules' => $modules,
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);