在我當前的應用程序中,我必須從命令提示符運行一些文件。當我在.htaccess文件中將環境設置爲生產時,應用程序可以在通過Web瀏覽器運行時讀取與生產有關的配置。但是,從命令提示符運行時,我正在獲取開發的配置。如何通過命令提示符運行時獲取生產配置?在從命令提示符運行文件時在Zend Framework中訪問.htaccess
請幫幫我。在此先感謝....
在我當前的應用程序中,我必須從命令提示符運行一些文件。當我在.htaccess文件中將環境設置爲生產時,應用程序可以在通過Web瀏覽器運行時讀取與生產有關的配置。但是,從命令提示符運行時,我正在獲取開發的配置。如何通過命令提示符運行時獲取生產配置?在從命令提示符運行文件時在Zend Framework中訪問.htaccess
請幫幫我。在此先感謝....
您可以執行你的腳本之前指定環境:
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
,你可以設置環境變量有:
像這樣的東西在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
感謝所有。我也有一個解決方案。 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'))));
謝謝。但對於我們的應用程序,我們無法將環境作爲參數傳遞當我從命令提示符運行文件時,它應該從bootstrap.php填充。 – user995385 2012-03-19 11:22:14