패스 Nginx 1.2.4와 PHP-FPM 5.4.8함께 사용 fastcgi하고에 맞춤 매개 변수를 전달하려고합니다 PHP. 지금까지 찾은 옵션은 다음과 같습니다.
-
은 USING
env지정하면의 환경 변수를 설정nginx하고 그것을 인출getenv()하거나$_ENV에서PHP. 문제는 컨텍스트env에서만 작동하는 반면main컨텍스트 에서 매개 변수를 설정해야한다는 것입니다server. -
fastcgi_param지시어를 위해 설계된대로 사용하십시오 .
사용하여 일부 매개 변수의 값을 변경하려고 시도 fastcgi_param했지만 실패했습니다.
nginx :
fastcgi_param PATH_INFO "/var/tmp";
PHP :
찾을 수있는 모든 사전 정의 된 배열을 확인했습니다.
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>';
보여줄 유일한 PATH_INFO것은 $_SERVER:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
그러나 내가 설정 한 가치 nginx는 고려되지 않았습니다.
Q1 : 지시문을 적용 nginx/php하려면 레벨 에서 무엇을 구성해야 fastcgi_param합니까?
Q2 : fastcgi_param지시어는 사전 정의 된 매개 변수 목록으로 제한 됩니까 (예 : PATH_INFO와 같이 내 자신의 사용자 정의 변수를 설정할 수는 없지만 FOO)?
Q3 : Q2에 예인 경우 : Nginx에서 PHP로 커스텀 파라미터를 전달하는 방법이 있습니까?
답변
fastcgi_param 지시문을 통해 추가 매개 변수를 전달할 수 있습니다. 나는이 기능을 사용했기 때문에 확신합니다.
내 모범적 인 nginx 설정
server {
server_name localhost;
include conf/defaults.conf;
root /var/www;
location ~* "\.php$" {
fastcgi_param CRS "crs";
include conf/fastcgi-php.conf;
}
}
그리고 phpinfo () 출력의 일부 :
...
_SERVER["USER"] fcgi
_SERVER["HOME"] /dev/null
_SERVER["FCGI_ROLE"] RESPONDER
_SERVER["REMOTE_USER"] no value
_SERVER["CRS"] crs
_SERVER["QUERY_STRING"] no value
답변
요청 헤더에 맞춤 변수를 전달하여 요청을 수정할 수 있습니다 (예 :
proxy_set_header Variable-name-here Value-here;
그런 다음 PHP 스크립트의 요청 헤더에서 해당 값을 읽을 수 있습니다.