ฉันใช้Nginx 1.2.4
ร่วมกับPHP-FPM 5.4.8
มีการส่งผ่านและพยายามที่จะส่งผ่านพารามิเตอร์ที่กำหนดเองเพื่อfastcgi
PHP
นี่คือตัวเลือกที่ฉันพบ:
โดยใช้
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
ไม่ได้นำมาพิจารณา
คำถามที่ 1: ฉันต้องกำหนดค่าใด ๆ ที่nginx/php
ระดับเพื่อให้fastcgi_param
คำสั่งมีผล
Q2: fastcgi_param
คำสั่งถูก จำกัด ไว้ที่รายการพารามิเตอร์ที่กำหนดไว้ล่วงหน้า (เช่นฉันสามารถตั้งค่าPATH_INFO
ได้ แต่ไม่ใช่ตัวแปรที่กำหนดเองของตัวเองเช่นFOO
)?
Q3: ถ้าใช่ถึง Q2: มีวิธีส่งพารามิเตอร์ที่กำหนดเองไปยัง PHP จาก Nginx หรือไม่?
fastcgi.conf
และfastcgi_params
แต่ไม่fastcgi-php.conf
: คุณไม่ได้รับที่มันมาจากไหน? คุณต้องการแบ่งปันผ่าน Pastebin หรือไม่?