Saya menggunakan Nginx 1.2.4
dalam kombinasi dengan PHP-FPM 5.4.8
dengan fastcgi
lulus dan mencoba untuk melewati parameter kustom untuk PHP
. Berikut adalah opsi yang saya temukan sejauh ini:
menggunakan
env
arahan untuk mengatur variabel lingkungannginx
dan mengambilnya dengangetenv()
atau$_ENV
dariPHP
. Masalahnya adalah bahwaenv
hanya beroperasi dalammain
konteks sedangkan saya perlu mengatur parameter dalamserver
konteks.menggunakan
fastcgi_param
arahan karena dirancang untuk itu.
Saya telah mencoba mengubah nilai beberapa parameter menggunakan fastcgi_param
tetapi tidak berhasil:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
Saya memeriksa semua array standar yang dapat saya temukan:
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>';
Satu-satunya yang ditampilkan PATH_INFO
adalah $_SERVER
:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Tetapi nilai yang saya tetapkan nginx
tidak diperhitungkan.
T1: Apakah saya perlu mengonfigurasi apa pun di nginx/php
level agar fastcgi_param
arahan mulai berlaku?
T2: Apakah fastcgi_param
arahan terbatas pada daftar parameter yang telah ditentukan (misalnya saya dapat mengatur PATH_INFO
tetapi tidak variabel kustom saya sendiri seperti FOO
)?
T3: Jika ya ke Q2: apakah ada cara untuk mengirimkan parameter khusus ke PHP dari Nginx?
fastcgi.conf
danfastcgi_params
tidakfastcgi-php.conf
: dari mana Anda mendapatkannya? Apakah Anda keberatan membagikannya melalui pastebin?fastcgi_pass 127.0.0.1:1028;
fastcgi_index index.php;
include conf/fastcgi.conf;
dan conf / fastcgi.conf berisi params dan pengaturan yang diperlukannginx
. Di sisi lain, saya lupa untuk memasukkan hal-hal ketika menyusunnginx
di masa lalu, tetapinginx
akan menolak untuk mulai mengatakan itu tidak tahu tentang beberapa arahan yang saya gunakan: di sini tidak ada, tidak ada keluhan, tetapi belumfastcgi_param
bekerja: (Saya akan mencobaubuntu nginx
paket aslinya dan melihat bagaimana kelanjutannya.ubuntu nginx
paket default ...Anda dapat memodifikasi permintaan dengan mengirimkan variabel khusus Anda di header permintaan, contoh:
Dan kemudian Anda bisa membaca nilai-nilai itu dari header permintaan di skrip PHP Anda.
sumber