从命令提示符运行文件时,在Zend Framework中访问.htaccess

时间:2012-03-19 10:24:29

标签: zend-framework .htaccess

在我当前的应用程序中,我必须从命令提示符运行一些文件。当我在.htaccess文件中将Environment设置为Production时,应用程序能够在通过Web浏览器运行时读取与生产相关的配置。但是从命令提示符运行时,我得到了开发的配置。如何在命令提示符下运行时获取生产配置?

请帮帮我。提前谢谢....

3 个答案:

答案 0 :(得分:1)

您可以在执行脚本之前指定环境:

APPLICATION_ENV=testing php script.php

然后在您的script.php $_SERVER['APPLICATION_ENV']

中访问它

我个人通过扩展Zend_Tool_Project_Provider_Abstract并将环境作为参数传递来实现这一点,请参阅此示例:https://github.com/b-b3rn4rd/zf-doctrine-base-tables-generator/blob/master/library/My/Component/DoctrineProvider.php

答案 1 :(得分:0)

假设您有一个单独的php脚本可以通过CLI运行,您可以在那里设置环境变量:

cli.php中的类似内容:

if (PHP_SAPI == 'cli') {
    putenv("APPLICATION_ENV=production");
}

或者,您可以检查$argv并从那里获取环境。也许是这样的:

if (PHP_SAPI == 'cli') {
    foreach ($argv as $val) {
        if (strpos($val, '=')) {
            $bits = explode('=', $val) {
                if ($bits[0] == 'environment') {
                    putenv("APPLICATION_ENV=" . $bits[1]);                
                }
            }
        }
    }
}

然后您将以:

运行您的应用
php index.php environment=production

答案 2 :(得分:0)

全部谢谢。我也有一个解决方案。 1.创建一个新的ini文件(例如environment.ini),其中包含APPLICATION_ENV ='production'。 2.修改zf_config.php以获取所需的环境配置。它适用于命令提示符和浏览器。

$ini_array = parse_ini_file(APPLICATION_PATH."/configs/environment.ini");
defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') :(($ini_array['APPLICATION_ENV']?$ini_array['APPLICATION_ENV']:'development'))));