Bir geçiş Nginx 1.2.4
ile PHP-FPM 5.4.8
birlikte kullanıyorum fastcgi
ve özel parametreleri geçirmeye çalışıyorum PHP
. İşte şimdiye kadar bulduğum seçenekler:
kullanarak
env
yönergesini bir ortam değişkeni ayarlamak içinnginx
ve onu getirgetenv()
veya$_ENV
danPHP
. Sorun,env
yalnızcamain
bağlam içinde çalışır, ancak parametreninserver
bağlam içinde ayarlanması gerekir .fastcgi_param
direktifin bunun için tasarlandığı şekliyle kullanılması .
Kullanarak bazı parametrelerin değerlerini değiştirmeyi denedim fastcgi_param
ama 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_INFO
oldu $_SERVER
:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Ancak belirlediğim değer nginx
dikkate alınmıyor.
S1: Direktifin yürürlüğe girmesi nginx/php
için herhangi bir düzeyde yapılandırmam gerekiyor fastcgi_param
mu?
S2: fastcgi_param
Yö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.conf
vefastcgi_params
ancakfastcgi-php.conf
: nerelisin aldın? Yapıştırıcı ile paylaşmayı düşünür müsünüz?