ในขณะที่กำลังอ่านบทช่วยสอน Zendฉันพบข้อความต่อไปนี้:
โปรดทราบว่าการตั้งค่า php_flag ใน. htaccess จะใช้ได้เฉพาะเมื่อคุณใช้ mod_php
ใครสามารถอธิบายได้ว่าหมายถึงอะไร?
ในขณะที่กำลังอ่านบทช่วยสอน Zendฉันพบข้อความต่อไปนี้:
โปรดทราบว่าการตั้งค่า php_flag ใน. htaccess จะใช้ได้เฉพาะเมื่อคุณใช้ mod_php
ใครสามารถอธิบายได้ว่าหมายถึงอะไร?
คำตอบ:
mod_php
วิธี PHP, เป็นโมดูล Apache
โดยทั่วไปเมื่อโหลดmod_php
เป็นโมดูล Apache จะช่วยให้ Apache จะตีความไฟล์ PHP (เหล่านั้นจะถูกตีความโดยmod_php
)
แก้ไข:มี(อย่างน้อย)สองวิธีในการเรียกใช้ PHP เมื่อทำงานกับ Apache:
mod_php
) : จากนั้นตัวแปล PHP จะถูก "ฝัง" ไว้ในกระบวนการ Apache: ไม่มีกระบวนการ PHP ภายนอกซึ่งหมายความว่า Apache และ PHP สามารถสื่อสารได้ดีขึ้น
และแก้ไขใหม่หลังจากความคิดเห็น : ใช้ CGI หรือmod_php
ขึ้นอยู่กับคุณ: เป็นเพียงเรื่องของการกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณ
หากต้องการทราบว่าเซิร์ฟเวอร์ของคุณใช้วิธีใดในขณะนี้คุณสามารถตรวจสอบผลลัพธ์ของphpinfo()
: ควรมีบางอย่างที่ระบุว่า PHP ทำงานผ่านmod_php
(หรือmod_php5
)หรือผ่าน CGI
นอกจากนี้คุณยังอาจต้องการที่จะดูที่php_sapi_name()
ฟังก์ชั่น: มันส่งกลับชนิดของการเชื่อมต่อระหว่างเว็บเซิร์ฟเวอร์และของ PHP
หากคุณเช็คในไฟล์คอนฟิกูเรชันของ Apache เมื่อใช้mod_php
งานควรมีLoadModule
บรรทัดดังนี้:
LoadModule php5_module modules/libphp5.so
(ชื่อไฟล์ทางด้านขวาอาจแตกต่างกัน - ใน Windows เช่นควรเป็น a .dll
)
mod_php
เป็นการกำหนดค่าที่พบมากที่สุด
mod_php
ไม่ใช่ PHP จริง มันเป็นเพียงส่วนเสริมของ Apache หรือมากกว่านั้นฉันคิดว่าคุณควรเริ่มจากคำตอบด้วยคำจำกัดความของPHP หมายถึงอะไรกันแน่ ?
คำตอบนี้นำมาจากTuxRadar :
เมื่อเรียกใช้ PHP ผ่านเว็บเซิร์ฟเวอร์ของคุณมีสองตัวเลือกที่แตกต่างกัน: เรียกใช้โดยใช้ CGI SAPI ของ PHP หรือเรียกใช้เป็นโมดูลสำหรับเว็บเซิร์ฟเวอร์ แต่ละคนมีประโยชน์ของตัวเอง แต่โดยรวมแล้วโมดูลนี้เป็นที่ต้องการ
การเรียกใช้ PHP เป็น CGI หมายความว่าโดยพื้นฐานแล้วคุณจะบอกตำแหน่งของไฟล์ปฏิบัติการ PHP ของเว็บเซิร์ฟเวอร์ของคุณและเซิร์ฟเวอร์จะเรียกใช้ไฟล์ปฏิบัติการนั้นโดยให้สคริปต์ที่คุณเรียกทุกครั้งที่คุณเยี่ยมชมเพจ นั่นหมายความว่าทุกครั้งที่คุณโหลดหน้า PHP จำเป็นต้องอ่าน php.ini และตั้งค่าต้องโหลดส่วนขยายทั้งหมดจากนั้นจึงต้องเริ่มงานแยกวิเคราะห์สคริปต์ - มีงานซ้ำ ๆ มากมาย
เมื่อคุณเรียกใช้ PHP เป็นโมดูล PHP จะอยู่ภายในเว็บเซิร์ฟเวอร์ของคุณโดยเริ่มต้นเพียงครั้งเดียวโหลดการตั้งค่าและส่วนขยายเพียงครั้งเดียวและยังสามารถจัดเก็บข้อมูลในเซสชันต่างๆ ตัวอย่างเช่นตัวเร่ง PHP อาศัย PHP ที่สามารถบันทึกข้อมูลแคชข้ามคำขอซึ่งเป็นไปไม่ได้โดยใช้เวอร์ชัน CGI
ข้อได้เปรียบที่ชัดเจนของการใช้ PHP เป็นโมดูลคือความเร็ว - คุณจะเห็นการเพิ่มความเร็วอย่างมากหากคุณแปลงจาก CGI เป็นโมดูล หลายคนโดยเฉพาะผู้ใช้ Windows ไม่ตระหนักถึงสิ่งนี้และยังคงใช้ php.exe CGI SAPI ซึ่งเป็นเรื่องที่น่าเสียดาย - โมดูลมักจะเร็วขึ้นสามถึงห้าเท่า
อย่างไรก็ตามมีข้อได้เปรียบที่สำคัญอย่างหนึ่งในการใช้เวอร์ชัน CGI นั่นคือ PHP จะอ่านการตั้งค่าทุกครั้งที่คุณโหลดหน้าเว็บ เมื่อ PHP ทำงานเป็นโมดูลการเปลี่ยนแปลงใด ๆ ที่คุณทำในไฟล์ php.ini จะไม่เกิดขึ้นจนกว่าคุณจะรีสตาร์ทเว็บเซิร์ฟเวอร์ซึ่งทำให้เวอร์ชัน CGI ดีกว่าหากคุณกำลังทดสอบการตั้งค่าใหม่จำนวนมากและต้องการดูการตอบสนองทันที
เซิร์ฟเวอร์ของคุณจำเป็นต้องติดตั้งโมดูล php เพื่อให้สามารถแยกวิเคราะห์โค้ด php ได้
หากคุณใช้ Ubuntu คุณสามารถทำได้อย่างง่ายดายด้วย
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
sudo /etc/init.d/apache2 restart
มิฉะนั้นคุณอาจรวบรวม apache ด้วย php: http://dan.drydog.com/apache2php.html
การระบุระบบปฏิบัติการเซิร์ฟเวอร์ของคุณจะช่วยให้ผู้อื่นตอบคำถามได้เฉพาะเจาะจงมากขึ้น
หมายความว่าคุณต้องติดตั้ง PHP เป็นโมดูลใน Apache แทนที่จะเริ่มเป็นสคริปต์ CGI
เพื่อเพิ่มคำตอบเหล่านี้คือ mod_php เป็นวิธีที่เก่าแก่ที่สุดและช้าที่สุดในเซิร์ฟเวอร์ HTTPD เพื่อใช้ PHP ไม่แนะนำเว้นแต่คุณจะใช้ Apache HTTPD และ PHP เวอร์ชันเก่า php-fpm และ proxy_cgi เป็นวิธีการที่ต้องการ
mod_php เป็นล่าม PHP
จากเอกสารสิ่งสำคัญอย่างหนึ่งของ mod_php คือ
"mod_php ไม่ใช่เธรดที่ปลอดภัยและบังคับให้คุณติดกับ mpm prefork (หลายกระบวนการไม่มีเธรด) ซึ่งเป็นการกำหนดค่าที่ช้าที่สุดที่เป็นไปได้"