2014-01-06 6 views
0

Я пытаюсь преобразовать команду, которую я запускаю в bash, чтобы запустить пользователя resque с помощью Phing, но я не смог найти способ установить переменные среды перед тем, как выполнить php команда.Как установить переменную среды перед запуском целевой команды Phing

Это команда, которую я пытаюсь преобразовать:

APPLICATION_ENV=dev VVERBOSE=1 QUEUE=myqueue APP_INCLUDE=app/cli/bootstrap.php php composer/chrisboulton/php-resque/resque.php 

Я пробовал:

<!-- Resque start consumer --> 
<target name="start_resque_consumer" description="Spans a resque consumer"> 
    <property environment="APPLICATION_ENV" value="dev"/> 
    <property environment="VVERBOSE" value="1"/> 
    <property environment="QUEUE" value="myqueue"/> 
    <property environment="APP_INCLUDE" value="${project.basedir}/app/cli/bootstrap.php"/> 
    <exec executable="php" checkreturn="true" passthru="true" dir="${project.basedir}/composer/chrisboulton/php-resque"> 
     <arg line="resque.php"/> 
    </exec> 
</target> 

И:

<!-- Resque start consumer --> 
<target name="start_resque_consumer" description="Spans a resque consumer"> 
    <exec executable="APPLICATION_ENV=dev 
         VVERBOSE=1 
         QUEUE=myqueue 
         APP_INCLUDE=${project.basedir}/app/cli/bootstrap.php 
         php" checkreturn="true" passthru="true" dir="${project.basedir}/composer/chrisboulton/php-resque"> 
     <arg line="resque.php"/> 
    </exec> 
</target> 

Любая идея, как я могу сделать это Работа? Можно ли даже установить переменные среды с помощью Phing?

+0

возможно дубликат [Phing ехес команды, чтобы установить переменную окружения] (http://stackoverflow.com/questions/5804817/phing-exec-command-to-set-environment-variable) – shanethehat

+0

Я думаю, что вы» re right @shanethehat. И, к сожалению, для меня это означает, что этого не достичь :( – mjsilva

+0

Вы можете просто создать разные файлы свойств, содержащие эти значения переменных окружения, не забудьте их отслеживать в своем управлении версиями. Тогда каждая среда имеет свои собственные файлы свойств. Ответьте на свой вопрос, но получите аналогичный результат в зависимости от вашей конкретной потребности. – eddiemoya

ответ

-1

Попробуйте с этим:

<target name="start_resque_consumer" description="Spans a resque consumer"> 
    <exec executable="php" checkreturn="true" passthru="true" dir="${project.basedir}/composer/chrisboulton/php-resque"> 
     <arg value="${project.basedir}/composer/chrisboulton/php-resque/resque.php" /> 
     <env key="VVERBOSE" value="1" /> 
     <env key="QUEUE" value="myqueue" /> 
     <env key="APP_INCLUDE" value="${project.basedir}/app/cli/bootstrap.php" /> 
    </exec> 
</target> 
+3

Я получаю '' 'phing.tasks.system.ExecTask не поддерживает создателя/ender 'env'''.' '' env Тег '' 'не существует, подтвержденный документацией: http://www.phing.info/docs/guide/trunk/apbs14.html –

0

Используйте env команду до вашего сценария.

<!-- Here are the initial data, under .gitignore --> 
<property file="build/secret/local.ini"/> 
<!-- Let's create some shortcuts --> 
<property name="local.mysql.connect" value="-h${local.mysql.host} -P${local.mysql.port} -u${local.mysql.user}"/> 
<property name="local.mysql.env" value="env MYSQL_PWD=${local.mysql.password}"/> 

<target name="some_target"> 
    <!-- Tens of them. "The password in command line" warning finally silenced. It can be put in cron ! --> 
    <exec 
     command="${local.mysql.env} mysql ${local.mysql.connect} ${local.mysql.database.target} &lt; ./sql/some_script.sql" 
    /> 
</target>