Symfony: Establecer parámetros externos usando el servidor incorporado de PHP

Creado en 5 feb. 2014  ·  3Comentarios  ·  Fuente: symfony/symfony

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,

  • Establecer variables env a través de Nginx las establecerá en $_ENV y $_SERVER
  • Establecer variables env a través del servidor incorporado las establecerá en $_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

Good first issue HttpKernel

Comentario más útil

¿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 .

Todos 3 comentarios

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 .

¿Fue útil esta página
0 / 5 - 0 calificaciones