คำตอบที่สั้นกว่า
อย่าตกใจ! หากคุณกังวลว่าเซิร์ฟเวอร์ Apache ของคุณใช้ PHP เวอร์ชันใดผลลัพธ์ของphpinfo()
สิ่งที่คุณควรใส่ใจ โมดูล Apache PHP และไบนารีบรรทัดคำสั่ง PHP เป็นสองสิ่งที่แตกต่างกันซึ่งไม่รบกวนซึ่งกันและกัน
ในความเป็นจริงคุณสามารถรวบรวมและโหลด PHP เวอร์ชันต่าง ๆ ที่คุณต้องการทำงานกับ Apache ได้ตราบใดที่คุณปรับ Apache ให้โหลดอย่างถูกต้อง อินเตอร์เฟสบรรทัดคำสั่ง PHP จะไม่เข้ามาเล่นในกรณีที่ Apache แยกวิเคราะห์หน้า PHP
เวอร์ชั่นบรรทัดคำสั่งของ PHP นั้นมีไว้สำหรับงานเฉพาะของบรรทัดคำสั่งและโมดูล PHP สำหรับ Apache จะไม่ใช้สัมผัสหรือจำเป็นต้องใช้
คำตอบอีกต่อไป
คุณพูดแบบนี้:
ฉันอยากรู้ว่าphp
ฉันใช้เวอร์ชันไหนฉันจึงเขียนสคริปต์มาตรฐาน:
phpinfo();
ซึ่งให้ PHP เวอร์ชัน 5.6.10 ซึ่งเป็นเวอร์ชัน PHP ที่ถูกต้องสำหรับแอปพลิเคชันของฉัน เมื่อฉันพยายามใน terminal:
php -i or php -v
มันแสดงเวอร์ชั่น PHP 5.3.2 ที่ฉันไม่ต้องการ
รุ่นของ PHP ที่พร้อมใช้งานจากบรรทัดคำสั่งไม่มีส่วนเกี่ยวข้อง 100% กับรุ่นของ PHP ที่โหลดเป็นโมดูล สิ่งเหล่านี้แยกจากกันโดยสิ้นเชิง
ดังนั้นหากคุณกังวลเกี่ยวกับ PHP เวอร์ชันที่เว็บแอปพลิเคชันของคุณใช้อยู่หากphpinfo()
แสดงเวอร์ชัน 5.6.10 และนั่นคือสิ่งที่คุณต้องการ / จำเป็นต้องปรับ 100%
PHP เวอร์ชั่นบรรทัดคำสั่งเป็นรายการระบบแยกจากกันโดยสิ้นเชิง phpinfo()
ดังนั้นสิ่งเดียวที่สำคัญก็คือการส่งออกของ
ถ้าด้วยเหตุผลบางอย่างที่คุณต้องการใช้ PHP กับ Apache เวอร์ชันอื่นสิ่งที่คุณต้องทำก็คือติดตั้งโมดูล Apache PHP ที่คอมไพล์แล้วและเพิ่มหรือปรับ - หรือ - บรรทัดนี้ในการกำหนดค่า Apache ของระบบของคุณ:
LoadModule php5_module /path/to/php/and/the/module/for/apache2/libphp5.so
และเพียงปรับเส้นทางไปที่libphp5.so
- ซึ่งเป็นสิ่งที่ Apache ใช้ในการแยกวิเคราะห์ PHP - จากนั้นรีสตาร์ท Apache และคุณอยู่ในธุรกิจ
ตัวอย่างเช่น ณ จุดหนึ่งฉันต้องรวบรวม PHP เวอร์ชัน 5.1.6 จากแหล่งที่มา (ด้วยการสนับสนุนห้องสมุด GD) สำหรับใช้กับเครื่อง Ubuntu 12.04 ที่ใช้ PHP 5.3.5 ในไฟล์โหลดโมดูล PHP ของเซิร์ฟเวอร์ที่นี่:
/etc/apache2/mods-available/php5.load
ฉันมีสายเช่นนี้:
# LoadModule php5_module /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module /usr/lib/apache2/modules/libphp516-gd.so
โปรดทราบว่าหนึ่งบรรทัดถูกlibphp535.so
ใส่เครื่องหมายความคิดเห็นไว้อย่างไรและอีกบรรทัดหนึ่งสำหรับไม่ใส่เครื่องหมายlibphp516-gd.so
ข้อคิดเห็นเป็นอย่างไร สิ่งที่ฉันทำคือฉันเปลี่ยนชื่อlibphp5.so
โมดูล Apache 5.3.5 PHP เริ่มต้นlibphp535.so
เป็นหมายเลขเวอร์ชันในชื่อดังนั้นฉันสามารถมีมันสำหรับการอ้างอิงและตั้งชื่อโมดูล PHP 5.1.6 (พร้อมสนับสนุนไลบรารี GD) libphp516-gd.so
เพื่อให้ฉันรู้ว่า ก็เช่นกัน วิธีนี้ฉันมีพวกเขาทั้งสองให้ฉันเคียงข้างกันในระบบ
และเช่นเดียวกับที่ฉันพูดตอนเริ่มต้น - เวอร์ชัน PHP ที่ใช้ในบรรทัดคำสั่งไม่มีส่วนเกี่ยวข้องใด ๆ กับโมดูล Apache PHP ดังนั้นคุณสามารถมีโมดูล Apache PHP เวอร์ชันต่าง ๆ จำนวนหนึ่งที่วางอยู่บนระบบพร้อมใช้งาน เพียงแค่ปรับการตั้งค่าและรีสตาร์ท Apache และคุณควรจะใช้งานทุกอย่างเพื่อใช้ PHP เวอร์ชันใดก็ตามที่คุณระบุ Apache ควรใช้