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: