Menu

Monday, July 1, 2019

[PHP] วิธีการเปิดใช้ environment variables ใน PHP FPM
[PHP] How to Enable Environment Variables in PHP FPM

PHP FPM จะถูก clear environment variables ออก เนื่องจากเหตุผลทางด้านความปลอดภัย

แต่ในบางครั้งเรามีความจำเป็นต้องใช้ตัวแปรพวกนี้ เช่น environment variables ที่ถูกส่งผ่านเข้ามาจากการสร้าง Docker image เพื่อเก็บข้อมูล log หรือสถิติต่างๆ

สำหรับการอนุญาตให้ environment variables ถูกส่งต่อไปยัง PHP FPM ให้แก้ไขไฟล์ /etc/php/7.2/fpm/pool.d/www.conf โดยเอา comment บรรทัดข้างล่างนี้ออก
;clear_env = no
จะได้ผลลัพธ์ดังภาพข้างล่าง

หลังจากนั้นให้ restart service php7.2-fpm ด้วยคำสั่งดังนี้
service php7.2-fpm restart
สำหรับการทดสอบว่า PHP FPM สามารถเรียกใช้งาน environment variables ได้แล้วหรือไม่

ขั้นตอนแรก รันคำสั่งดังนี้ เพื่อดูว่า มี environment variables อะไรบ้าง
env
จะได้ผลลัพธ์ดังภาพข้างล่าง

ขั้นตอนที่ 2 เพิ่มโค้ดข้างล่างนี้ในไฟล์ PHP ที่เรียกใช้ โดย PHP FPM
dump(getenv('LANG'));
ขั้นตอนที่ 3 ลองเรียกหน้าเว็บที่ใช้ไฟล์ PHP ในขั้นตอนที่ 2 จะได้ผลลัพธ์ดังภาพข้างล่าง
หมายเหตุ: ถ้าหากลองเรียกหน้าเว็บแล้ว ไม่มีการพิมพ์ค่าออกมา ให้ restart service php7.2-fpm ก่อน

เพิ่มเติม: เราลองใส่ comment กลับไปที่บรรทัด clear_env และ restart service php7.2-fpm แล้วลองเรียกหน้าเว็บอีกรอบ จะได้ผลลัพธ์ดังภาพข้างล่าง
ข้อควรระวัง: การเรียกใช้ php ผ่านทาง command line จะเป็นการเรียกใช้ PHP CLI แทน PHP FPM ซึ่ง PHP CLI จะมีการส่งผ่านค่า environment variables โดยอัตโนมัติและการแก้ค่า config ข้างบนก็ไม่ส่งผลกับ PHP CLI  ยกตัวอย่างเช่น ถ้าเรารันคำสั่งด้านล่างนี้
php -r 'print_r(getenv());'
เราจะได้ผลลัพธ์ตามภาพข้างล่างไม่ว่าเราจะแก้ไขค่า config ตามข้างบนหรือไม่

No comments:

Post a Comment