Como escapar / citar um cifrão '$' em um env var em um conjunto php-fpm?

1

Como o symfony4 usa variáveis dotenv e de ambiente para configuração, elas também são necessárias no servidor.

para passar as variáveis, é possível adicionar o seguinte à configuração do conjunto:

example-pool.conf :

env[APP_ENV] = 'prod'

o problema é o seguinte recurso:

All $VARIABLEs are taken from the current"environment

como quase todas as strings de senha crypted / hashed contém $ , eu corri para o problema, que as variáveis de ambiente contendo $ estão vazias.

php bin/console security:encode-password
...snip...
------------------ ---------------------------------------------------------------
  Key                Value
 ------------------ ---------------------------------------------------------------
  Encoder used       Symfony\Component\Security\Core\Encoder\BCryptPasswordEncoder
  Encoded password   $2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.
 ------------------ ---------------------------------------------------------------
...snip...

é claro que eu posso usar o nginx para passar minhas variáveis de ambiente para php-fpm

nginx-vhost.conf :

fastcgi_param APP_ENV "prod";

mas neste caso eu teria que refatorar minha receita de fantoche, então eu estou procurando uma maneira alternativa de definir isso em php-fpm

Eu tentei soletrar, aspas duplas e escapar do $

example-pool.conf :

...snip...
env[PASSWORD1] = $2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.
env[PASSWORD2] = "$2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg."
env[PASSWORD3] = '$2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.'
env[PASSWORD4] = "'$2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.'"
env[PASSWORD5] = '"$2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg."'
env[PASSWORD6] = "\y\\$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg."
env[PASSWORD7] = '\y\\$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.'
env[PASSWORD8] = \y\\$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.
env[PASSWORD9] = $$2y$$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.
env[PASSWORD10] = '$$2y$$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.'
...snip...

leva à seguinte saída em php test.php contendo um simples:     

saída:

  "PASSWORD10" => ""
  "PASSWORD9" => ""
  "PASSWORD8" => "\y\\$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg."
  "PASSWORD7" => "\y\\$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg."
  "PASSWORD6" => ""
  "PASSWORD5" => ""$2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.""
  "PASSWORD4" => "'$2y$12$RbCl.SsH6yFDHtTq1Bc1xeK3cdkWbtZEmzyVTnMzlOEuVyC5EySg.'"
  "PASSWORD3" => ""
  "PASSWORD2" => ""
  "PASSWORD1" => ""

marcou isso como relacionado à segurança porque leva a usar senhas de texto simples fracas (alfanum).

relacionado, mas não o mesmo que

questão secundária, como o processo do php-fpm é iniciado como o usuário definido em user , quais arquivos de ambiente são carregados? testado .bashrc e .profile como estes são os locais onde o php-cli lê as variáveis env eu ficaria feliz em declará-los somente em um lugar e usá-los de cli e fpm. essa pergunta já é indiretamente feita aqui Passar variáveis de ambiente para a CLI do PHP e FPM

pensando em criar um relatório de erros no php, pois a solução alternativa para isso nos leva a usar diretamente os arquivos dotenv:

Variáveis de ambiente para aplicativos PHP

    
por c33s 17.05.2018 / 00:22

0 respostas