Bir geçiş Nginx 1.2.4ile PHP-FPM 5.4.8birlikte kullanıyorum fastcgive özel parametreleri geçirmeye çalışıyorum PHP. İşte şimdiye kadar bulduğum seçenekler:
kullanarak
envyönergesini bir ortam değişkeni ayarlamak içinnginxve onu getirgetenv()veya$_ENVdanPHP. Sorun,envyalnızcamainbağlam içinde çalışır, ancak parametreninserverbağlam içinde ayarlanması gerekir .fastcgi_paramdirektifin bunun için tasarlandığı şekliyle kullanılması .
Kullanarak bazı parametrelerin değerlerini değiştirmeyi denedim fastcgi_paramama başarısız oldu:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
Bulabildiğim önceden tanımlanmış tüm dizileri kontrol ettim:
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>';
Göstermek için sadece bir PATH_INFOoldu $_SERVER:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Ancak belirlediğim değer nginxdikkate alınmıyor.
S1: Direktifin yürürlüğe girmesi nginx/phpiçin herhangi bir düzeyde yapılandırmam gerekiyor fastcgi_parammu?
S2: fastcgi_paramYönerge önceden tanımlanmış bir parametre listesiyle sınırlı mı (örn PATH_INFO. Kendi değişkenlerimi belirleyebilirim, ancak değil FOO)?
S3: Q2'ye evet ise: Nginx'ten PHP'ye özel parametreler iletmenin bir yolu var mı?
fastcgi.confvefastcgi_paramsancakfastcgi-php.conf: nerelisin aldın? Yapıştırıcı ile paylaşmayı düşünür müsünüz?