Hola,
Encontré un problema con la configuración de parámetros externamente (como se explica en la página " Cómo configurar parámetros externos en el contenedor de servicios ") usando el servidor integrado de PHP 5.4.
Si consulta esta pregunta de StackOverflow y este problema de GitHub , puede ver que la directiva INI de orden de variables debe configurarse para incluir "E" para que pueda configurar las variables de entorno de esta manera:
export SYMFONY__DATABASE__PASSWORD="password"
php -d variables_order=EGPCS -S 0.0.0.0:8080 -t . test.php
Esto funciona bien, y se puede acceder a $ SYMFONY__DATABASE__PASSWORD
a través getenv('SYMFONY__DATABASE__PASSWORD')
y $_ENV['SYMFONY__DATABASE__PASSWORD']
.
El problema es,
$_ENV
y $_SERVER
$_ENV
pero _no_ en $_SERVER
La documentación de la directiva INI de orden de variables contiene la siguiente advertencia:
"In both the CGI and FastCGI SAPIs, $_SERVER is also populated by
values from the environment; S is always equivalent to ES regardless
of the placement of E elsewhere in this directive."
Symfony HttpKernel solo cargará las variables de entorno si existen en $_SERVER, y no si existen en $_ENV.
Consulta el método getEnvParameters() en src/Symfony/Component/HttpKernel/Kernel.php .
Si se incluyera $_ENV en este método, creo que esto resolvería el problema.
Si hay una solución alternativa, ¡házmelo saber! :)
Salud,
Ryan
un cheque simple php_sapi_name() == 'cli-server'
en Kernel::getEnvParameters
se puede usar para cambiar la búsqueda de $_SERVER
a $_ENV
Impresionante gracias por la solución @fabpot!
¿Hay alguna razón por la cual el comando server:run
no permite cambiar la configuración php.ini
usando el indicador binario de PHP -d
?
Para solucionar el problema de PHP con $_ENV
/ $_SERVER
mencionado anteriormente, no quiero cambiar mi php.ini
, solo quiero hacer algo como esto:
SYMFONY__MY__PARAM=Foobar php -d variables_order=EGPCS -t web -S 127.0.0.1:8000 `pwd`/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php
Preferiría usar server:run
pero no puedo pasar la parte -d variables_order=EGPCS
.
Comentario más útil
¿Hay alguna razón por la cual el comando
server:run
no permite cambiar la configuraciónphp.ini
usando el indicador binario de PHP-d
?Para solucionar el problema de PHP con
$_ENV
/$_SERVER
mencionado anteriormente, no quiero cambiar miphp.ini
, solo quiero hacer algo como esto:Preferiría usar
server:run
pero no puedo pasar la parte-d variables_order=EGPCS
.