我有一個建立在Symfony 1.4上的項目,它有多個環境 - 每個開發人員都有自己的副本安裝在本地計算機上,因此擁有自己的環境。Symfony 1.4:以編程方式爲CLI設置環境
我能夠在index.php中動態設置環境,但我如何才能爲CLI任務執行此操作?
我當然可以使用--env = myenvironment上的所有任務,但我寧願它是能夠使用相同的邏輯,我在的index.php
我有一個建立在Symfony 1.4上的項目,它有多個環境 - 每個開發人員都有自己的副本安裝在本地計算機上,因此擁有自己的環境。Symfony 1.4:以編程方式爲CLI設置環境
我能夠在index.php中動態設置環境,但我如何才能爲CLI任務執行此操作?
我當然可以使用--env = myenvironment上的所有任務,但我寧願它是能夠使用相同的邏輯,我在的index.php
我看到,這個問題已經有很多的看法,所以僅供參考我張貼我想出了一個解決方案。
我終於想出了Web和CLI訪問的解決方案,因此每個安裝可確定沒有顛覆影響任何使用哪種環境:
http://www.4pmp.com/2010/10/programmatically-set-environment-for-symfony-project/
你可以做一些類似的中你的任務也許:
class MyTask extends sfBaseTask
{
protected function configure()
{
// Env config file
$file = sfConfig::get("sf_config_dir") . DIRECTORY_SEPARATOR . "environment.cfg";
$env = (file_exists($file) ? file_get_contents($file) : "prod");
$this->addOptions(array(
new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', $env),
}
}
上面應該工作;如果environment.cfg文件不存在,它默認爲'prod'環境。這也假定你只有文件中的環境(例如'prod','dev','slappythefish'等)。
謝謝,這應該工作 - 但有一個全球性的方式來做到這一點,以便當我輸入symfony propel:insert-sql-diff時,它會自動計算出使用哪個環境? – SlappyTheFish 2010-04-04 20:27:15
sfContext::getInstance()->getConfiguration()->getEnvironment()
你是如何確定的環境,爲開發者在index.php?主機名? GET參數?你能告訴我們一些代碼嗎? – richsage 2010-03-30 10:28:43
它在主配置目錄中查找environment.cfg文件的存在。該文件的內容將環境指定爲字符串。優點是這個文件沒有被提交給SVN,因此每個開發者都可以指定他們自己的配置,而不會影響svn中的配置。 – SlappyTheFish 2010-03-30 11:25:10