Estou usando Nginx 1.2.4
em combinação com PHP-FPM 5.4.8
um fastcgi
passe e tentando passar parâmetros personalizados para PHP
. Aqui estão as opções que encontrei até agora:
usando a
env
diretiva para definir uma variável de ambientenginx
e buscá-la comgetenv()
ou$_ENV
dePHP
. O problema é queenv
só opera nomain
contexto, enquanto eu preciso definir o parâmetro noserver
contexto.usando a
fastcgi_param
diretiva como foi projetada para isso.
Eu tentei alterar os valores de alguns parâmetros usando, fastcgi_param
mas não obtive êxito:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
Eu verifiquei todas as matrizes 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>';
O único a mostrar PATH_INFO
foi $_SERVER
:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Mas o valor que defini nginx
não é levado em consideração.
P1: Preciso configurar algo no nginx/php
nível para que a fastcgi_param
diretiva entre em vigor?
P2: A fastcgi_param
diretiva está limitada a uma lista predefinida de parâmetros (por exemplo, eu posso definir, PATH_INFO
mas não variáveis personalizadas próprias como FOO
)?
Q3: Se sim para o Q2: existe uma maneira de passar parâmetros personalizados para o PHP a partir do Nginx?
fastcgi.conf
efastcgi_params
nãofastcgi-php.conf
: de onde você tirou isso? Você se importa de compartilhá-lo via pastebin?fastcgi_pass 127.0.0.1:1028;
fastcgi_index index.php;
include conf/fastcgi.conf;
e o conf / fastcgi.conf contém o restante dos parâmetros e configurações necessários do fastcginginx
. Por outro lado, esqueci-me de incluir coisas ao compilarnginx
no passado, mas menginx
recusaria a começar a dizer que não sabia sobre algumas diretrizes que eu estava usando: aqui nada, sem queixas, mas ainda assimfastcgi_param
não está funcionando: (Vou tentar aubuntu nginx
embalagem original e ver como ela vai. #ubuntu nginx
pacote ...Você pode modificar a solicitação passando suas variáveis personalizadas no cabeçalho da solicitação, exemplo:
E então você pode ler esses valores no cabeçalho da solicitação no seu script PHP.
fonte