Sto usando Nginx 1.2.4
in combinazione con PHP-FPM 5.4.8
un fastcgi
passaggio e sto cercando di passare parametri personalizzati a PHP
. Ecco le opzioni che ho trovato finora:
usando la
env
direttiva per impostare una variabile d'ambientenginx
e recuperarla congetenv()
o$_ENV
daPHP
. Il problema è cheenv
funziona solo nelmain
contesto, mentre ho bisogno di impostare il parametro nelserver
contesto.usando la
fastcgi_param
direttiva come è progettato per quello.
Ho provato a modificare i valori di alcuni parametri utilizzando fastcgi_param
ma non è riuscito:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
Ho controllato tutti gli array predefiniti che ho trovato:
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>';
L'unico da mostrare PATH_INFO
era $_SERVER
:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Ma il valore che ho impostato nginx
non viene preso in considerazione.
Q1: Devo configurare qualcosa a nginx/php
livello affinché la fastcgi_param
direttiva abbia effetto?
Q2: la fastcgi_param
direttiva è limitata a un elenco predefinito di parametri (ad es. Posso impostare PATH_INFO
ma non variabili personalizzate come ad esempio FOO
)?
Q3: Se sì a Q2: c'è un modo per passare parametri personalizzati a PHP da Nginx?
fastcgi.conf
efastcgi_params
nofastcgi-php.conf
: da dove l'hai preso? Ti dispiace condividerla tramite pastebin?