Estoy usando Nginx 1.2.4en combinación con PHP-FPM 5.4.8un fastcgipase e intento pasar parámetros personalizados a PHP. Estas son las opciones que he encontrado hasta ahora:
usando la
envdirectiva para establecer una variable de entornonginxy buscarla congetenv()o$_ENVdesdePHP. El problema es queenvsolo opera enmaincontexto, mientras que necesito establecer el parámetro enservercontexto.usando la
fastcgi_paramdirectiva ya que está diseñada para eso.
Intenté cambiar los valores de algunos parámetros usando fastcgi_parampero 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_INFOfue $_SERVER:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Pero el valor que configuré nginxno se tiene en cuenta.
P1: ¿Necesito configurar algo a nginx/phpnivel para que la fastcgi_paramdirectiva surta efecto?
P2: ¿La fastcgi_paramdirectiva está limitada a una lista predefinida de parámetros (p. Ej., Puedo establecer PATH_INFOpero 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.confyfastcgi_paramsnofastcgi-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 compilarnginxen el pasado, pero menginxnegaría a comenzar a decir que no sabía sobre algunas directivas que estaba usando: aquí nada, no tengo quejas, pero esofastcgi_paramno funciona: (Voy a probar elubuntu nginxpaquete original y veré cómo funciona.ubuntu nginxpaquete 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