2017-01-25 3 views
1

Я развернул мое приложение symfony для Heroku, но я хочу настроить компонент swiftmailer с помощью config_vars, предоставленных Heroku. У меня уже есть два из них:Развертывание symfony для Heroku, получение параметров swiftmailer через configvars

  1. SYMFONY_ENV: прод
  2. CLEARDB_DATABASE_URL: моя-соединение строка

Теперь то, что я хотел бы сделать, это SwiftMailer полномочия, опишите в config_prod.yml:

#config_prod.yml 

swiftmailer: 
    transport: "%env(mail_transport)%" 
    host:  "%env(mail_host)%" 
    username: "%env(mail_user)%" 
    password: "%env(mail_password)%" 
    spool:  { type: memory } 

I, а затем, настроить config_vars на Heroku, однако при попытке развернуть приложение, я получил следующее исключение.

[Symfony\Component\DependencyInjection\Exception\EnvParameterException] 
Incompatible use of dynamic environment variables "mail_transport" found in parameters. 

[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException] 
Unable to replace alias "swiftmailer.mailer.default.transport.real" with actual definition "%env(mail_transport)%". 

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException] 
You have requested a non-existent service "%env(mail_transport)%". 

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the symfony-scripts event terminated with an exception 

Если я жестко задал параметры в config.yml, то развертывание в Heroku будет успешным.

Что я испортил? Thx заранее.

+0

Как вы получили электронное письмо для работы с героку? – Baig

+0

@Baig в config_prod.yml я использовал следующую конфигурацию SwiftMailer: транспорт: хозяин SMTP: smtp.sendgrid.net имя пользователя: "% ENV (SENDGRID_USERNAME)%" пароль: «% ENV (SENDGRID_PASSWORD)% " порт: 587 – dipeti

ответ

0

Я не знаю много о Heroku, но я знаю, как получить ENV_VAR внутри симфони конфигурации;)

внутри app/config где ваши другие конфиги файлы находятся создать новый файл с именем parameters.php

<?php 
if(isset($_SERVER['AWS_MAILER_HOST'])){ 
    $container->setParameter('mailer_transport', @$_SERVER['AWS_MAILER_TRANSPORT']); 
    $container->setParameter('mailer_host', @$_SERVER['AWS_MAILER_HOST']); 
    $container->setParameter('mailer_username', @$_SERVER['AWS_MAILER_USERNAME']); 
    $container->setParameter('mailer_password', @$_SERVER['AWS_MAILER_PASSWORD']); 
    $container->setParameter('mailer_port', @$_SERVER['AWS_MAILER_PORT']); 
    $container->setParameter('mailer_encryption', @$_SERVER['AWS_MAILER_ENCRYPTION']); 
    $container->setParameter('mailer_auth_mode', @$_SERVER['AWS_MAILER_AUTH_MODE']); 
} 

заменить все 'AWS_MAILER_...' с вашим ENVIRONEMENT_VAR

Внутри вашего app/config/config.yml поставил

imports: 
    - { resource: parameters.yml } 
    - { resource: parameters.php } <------------ 
Смежные вопросы