Estoy usando Nginx 1.2.4
en combinación con PHP-FPM 5.4.8
un fastcgi
pase e intento pasar parámetros personalizados a PHP
. Estas son las opciones que he encontrado hasta ahora:
usando la
env
directiva para establecer una variable de entornonginx
y buscarla congetenv()
o$_ENV
desdePHP
. El problema es queenv
solo opera enmain
contexto, mientras que necesito establecer el parámetro enserver
contexto.usando la
fastcgi_param
directiva ya que está diseñada para eso.
Intenté cambiar los valores de algunos parámetros usando fastcgi_param
pero no tuve éxito:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
Revisé todas las matrices predefinidas que pude encontrar:
echo '<pre>';
echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS);
echo "\n".'$_SERVER'."\n"; var_dump($_SERVER);
echo "\n".'$_GET'."\n"; var_dump($_GET);
echo "\n".'$_POST'."\n"; var_dump($_POST);
echo "\n".'$_FILES'."\n"; var_dump($_FILES);
echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST);
echo "\n".'$_SESSION'."\n"; var_dump($_SESSION);
echo "\n".'$_ENV'."\n"; var_dump($_ENV);
echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE);
echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg);
echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA);
echo "\n".'$http_response_header'."\n"; var_dump($http_response_header);
echo "\n".'$argc'."\n"; var_dump($argc);
echo "\n".'$argv'."\n"; var_dump($argv);
echo '</pre>';
El único que se mostró PATH_INFO
fue $_SERVER
:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Pero el valor que configuré nginx
no se tiene en cuenta.
P1: ¿Necesito configurar algo a nginx/php
nivel para que la fastcgi_param
directiva surta efecto?
P2: ¿La fastcgi_param
directiva está limitada a una lista predefinida de parámetros (p. Ej., Puedo establecer PATH_INFO
pero no variables personalizadas propias como FOO
)?
P3: En caso afirmativo a P2: ¿hay alguna forma de pasar parámetros personalizados a PHP desde Nginx?
fastcgi.conf
yfastcgi_params
nofastcgi-php.conf
: ¿de dónde lo sacaste? ¿Te importaría compartirlo a través de pastebin?fastcgi_pass 127.0.0.1:1028;
fastcgi_index index.php;
include conf/fastcgi.conf;
y conf / fastcgi.conf contiene el resto de parámetros y configuraciones requeridas por fastcginginx
. Por otro lado, olvidé incluir cosas al compilarnginx
en el pasado, pero menginx
negaría a comenzar a decir que no sabía sobre algunas directivas que estaba usando: aquí nada, no tengo quejas, pero esofastcgi_param
no funciona: (Voy a probar elubuntu nginx
paquete original y veré cómo funciona.ubuntu nginx
paquete predeterminado ...Puede modificar la solicitud pasando sus variables personalizadas en el encabezado de la solicitud, por ejemplo:
Y luego puede leer esos valores desde el encabezado de la solicitud en su script PHP.
fuente