在我当前的应用程序中,我必须从命令提示符运行一些文件。当我在.htaccess文件中将Environment设置为Production时,应用程序能够在通过Web浏览器运行时读取与生产相关的配置。但是从命令提示符运行时,我得到了开发的配置。如何在命令提示符下运行时获取生产配置?
请帮帮我。提前谢谢....
答案 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'))));