2012-03-19 28 views
1

在我當前的應用程序中,我必須從命令提示符運行一些文件。當我在.htaccess文件中將環境設置爲生產時,應用程序可以在通過Web瀏覽器運行時讀取與生產有關的配置。但是,從命令提示符運行時,我正在獲取開發的配置。如何通過命令提示符運行時獲取生產配置?在從命令提示符運行文件時在Zend Framework中訪問.htaccess

請幫幫我。在此先感謝....

回答

1

您可以執行你的腳本之前指定環境:

APPLICATION_ENV=testing php script.php 

,然後訪問它在你的script.php $_SERVER['APPLICATION_ENV']

個人,我通過擴展Zend_Tool_Project_Provider_Abstract這樣做並通過環境參數,看下面的例子:假設你有通過CLI運行單獨的PHP腳本https://github.com/b-b3rn4rd/zf-doctrine-base-tables-generator/blob/master/library/My/Component/DoctrineProvider.php

+0

謝謝。但對於我們的應用程序,我們無法將環境作爲參數傳遞當我從命令提示符運行文件時,它應該從bootstrap.php填充。 – user995385 2012-03-19 11:22:14

0

,你可以設置環境變量有:

像這樣的東西在cli.php

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

或者,你可以檢查並從那裏得到了環境。也許是這樣的:

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 
0

感謝所有。我也有一個解決方案。 1.創建一個保存APPLICATION_ENV ='production'的新ini文件(比如environment.ini)。 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')))); 
相關問題