ค้นหาเว็บไซต์

วิธีติดตั้ง PHP 7 ด้วย Apache และ MariaDB บน CentOS 7/Debian 8


เมื่อสัปดาห์ที่แล้ว (เจาะจงมากขึ้นในวันที่ 21 สิงหาคม 2015) ทีมพัฒนา PHP ได้ประกาศความพร้อมของ PHP 7 รุ่นล่าสุด และสนับสนุนให้ผู้ใช้และนักพัฒนาทั่วโลกทดสอบ มัน.

อย่างไรก็ตาม เราต้องทราบว่าเนื่องจากนี่คือเวอร์ชัน RC (Release Candidate) จึงคาดว่าอาจมีข้อบกพร่องหรือเข้ากันไม่ได้กับการตั้งค่าที่มีอยู่ ดังนั้นผู้ใช้จึงถูกขอให้ รายงานโดยใช้ระบบติดตามจุดบกพร่อง และห้ามใช้ PHP 7 ในการใช้งานจริงในขณะที่ยังคงอยู่ในระยะนั้น

ด้านสว่างก็คือเวอร์ชันนี้มีการแก้ไขหลายประการ (คุณอาจต้องการดูหน้านี้ในพื้นที่เก็บข้อมูล GitHub ของโครงการเพื่อดูรายการโดยละเอียดของคุณลักษณะใหม่และการปรับปรุง) โดยคุณลักษณะที่โดดเด่นที่สุดคือ ประสิทธิภาพที่โดดเด่นเพิ่มขึ้นเมื่อเปรียบเทียบกับรุ่นก่อนหน้า

บทความนี้จะแนะนำคุณตลอดขั้นตอนการติดตั้งและการคอมไพล์ PHP 7 RC1 จาก tarball ต้นทางพร้อมกับ Apache และ MariaDB บน CentOS 7 และ เดเบียน 8 เจสซี คำแนะนำเดียวกันนี้ยังใช้ได้กับการกระจายแบบ CentOS เช่น RHEL, Fedora, Scientific Linux และ Debian< พื้นฐาน เช่น Ubuntu/Mint

การติดตั้ง PHP 7 ใน CentOS 7 และ Debian 8

ตามที่ระบุไว้ในบทนำ เนื่องจากเวอร์ชันนี้เป็น RC แทนที่จะเป็นเวอร์ชันเสถียร เราจึงไม่สามารถคาดหวังได้อย่างสมเหตุสมผลว่าจะพบเวอร์ชันนี้ในที่เก็บ ด้วยเหตุผลดังกล่าว เราจะต้องดาวน์โหลดซอร์สโค้ดและคอมไพล์โปรแกรมตั้งแต่ต้น

อย่างไรก็ตาม ก่อนที่เราจะดำเนินการดังกล่าว เราต้องจำไว้ว่าเพื่อที่จะใช้ประโยชน์จาก PHP 7 ได้ดีขึ้น และบางทีวิธีที่ดีที่สุดในการทดลองใช้คือการติดตั้งพร้อมกับ Apache และ MariaDB ซึ่งเราสามารถพบได้ในที่เก็บ:

บน CentOS 7


yum update && yum install httpd mariadb mariadb-server

บนเดเบียน 8


aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

ไม่ว่าในกรณีใด tarball ที่มีซอร์สโค้ด PHP สามารถดาวน์โหลดและแยกได้ดังต่อไปนี้:


wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
tar xzf php-7.0.0RC1.tar.gz -C /opt

เมื่อเสร็จแล้ว ไปที่ /opt/php-7.0.0RC1 และรันสคริปต์ buildconf ด้วยสวิตช์ –force เพื่อบังคับ บิลด์ของเวอร์ชัน RC:


ls


cd /opt/php-7.0.0RC1.tar.gz
./buildconf --force

ตอนนี้ได้เวลาดำเนินการคำสั่ง configure ที่รู้จักกันดีของเรา แม้ว่าตัวเลือกด้านล่างจะรับประกันการติดตั้ง PHP 7 มาตรฐาน แต่คุณสามารถดูรายการตัวเลือกทั้งหมดในคู่มือ PHP เพื่อปรับแต่งการติดตั้งตามความต้องการของคุณได้ดียิ่งขึ้น:


./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

หากคุณพบข้อผิดพลาดต่อไปนี้:


configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

เพียงติดตั้ง gcc และการอ้างอิงด้วยคำสั่งต่อไปนี้ แล้วเรียกใช้คำสั่ง configure ด้านบนอีกครั้ง


yum install gcc       [On CentOS 7 box]
aptitude install gcc  [On Debian 8 box]

คุณกำลังจะไปคอมไพล์ PHP 7 ซึ่งอาจใช้เวลาสักครู่ หากมีไลบรารีหรือทรัพยากรอื่นที่ขาดหายไป กระบวนการนี้จะล้มเหลว แต่คุณสามารถติดตั้งและเรียกใช้การกำหนดค่าอีกครั้งได้ตลอดเวลา

ตัวอย่างเช่น ฉันต้องติดตั้ง libxml2-devel หลังจากได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:


configure: error: xml2-config not found. Please check your libxml2 installation.

ขออภัย เราไม่สามารถครอบคลุมสถานการณ์ได้ทั้งหมด เนื่องจากซอฟต์แวร์ที่ติดตั้งอาจแตกต่างกันไปในแต่ละระบบ ระหว่างการติดตั้ง คุณอาจต้องการดูหน้านี้ซึ่งสรุปข้อผิดพลาดหลายประการที่คุณอาจพบขณะติดตั้ง PHP จากแหล่งที่มา พร้อมด้วยวิธีแก้ไขปัญหาที่เกี่ยวข้อง

บน CentOS 7

ต่อไปนี้เป็นรายการแพ็คเกจทั้งหมดที่ฉันต้องติดตั้งในกล่อง CentOS 7 ก่อนที่จะดำเนินการกำหนดค่าได้สำเร็จ:


gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

คุณสามารถติดตั้งแพ็คเกจที่จำเป็นทั้งหมดข้างต้นได้โดยใช้คำสั่ง yum เพียงคำสั่งเดียวดังที่แสดง


yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

ข้อความต่อไปนี้บ่งชี้ว่าการกำหนดค่าเสร็จสิ้นเรียบร้อยแล้ว:

จากนั้นวิ่ง


make
make install

เมื่อการติดตั้งเสร็จสมบูรณ์ คุณสามารถตรวจสอบเวอร์ชันได้โดยใช้บรรทัดคำสั่ง:

บนเดเบียน 8

ใน Debian ฉันต้องติดตั้งแพ็คเกจต่อไปนี้เพื่อให้กระบวนการกำหนดค่าเสร็จสมบูรณ์:


make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

คุณสามารถติดตั้งแพ็คเกจที่จำเป็นทั้งหมดข้างต้นได้ด้วยคำสั่ง apt-get บน Debian 8


apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

จากนั้นเพิ่ม –with-libdir=/lib/x86_64-linux-gnu ให้กับตัวเลือกการกำหนดค่า และสร้าง symlink ต่อไปนี้ลงในไฟล์ส่วนหัว gmp.h:


ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

จากนั้นรัน make และ make install เหมือนในกรณีก่อนหน้า ภายใน 10-15 นาที การรวบรวมควรจะเสร็จสิ้น และเราสามารถตรวจสอบเวอร์ชัน PHP ที่ติดตั้งได้เหมือนเดิม:


make
make install

การตั้งค่า php.ini และทดสอบการติดตั้ง PHP 7

เมื่อคุณติดตั้ง PHP จากแหล่งที่มา จะมีตัวอย่าง php.ini สองตัวอย่างมาให้ ในกรณีนี้ จะอยู่ภายใน /opt/php-7.0.0RC1:


ls -l /opt/php-7.0.0RC1 | grep php.ini

ตอนนี้คุณต้องคัดลอกหนึ่งในนั้นไปที่ /usr/local/lib ซึ่งถูกกำหนดให้เป็นตำแหน่งเริ่มต้นสำหรับไฟล์ดังกล่าวตามบันทึกการติดตั้ง:


cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

และอย่าลืมเพิ่มคำสั่งการกำหนดค่านี้ลงในไฟล์การกำหนดค่าหลักของ Apache


/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

ใน Debian 8 คุณสามารถละบรรทัด LoadModule ได้ และยังต้องลบและสร้างลิงก์สัญลักษณ์ต่อไปนี้ไปยังโมดูล Apache ที่ระบุด้วย:


cd /etc/apache2
rm mods-enabled/mpm_event.conf
rm mods-enabled/mpm_event.load
ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
ln -s mods-available/mpm_prefork.load mpm_prefork.load

จากนั้นรีสตาร์ทเว็บเซิร์ฟเวอร์:


systemctl restart httpd     [On CentOS 7 box]
systemctl restart apache2   [On Debian 8 box]

หากการเริ่มต้น Apache ใน CentOS 7 ส่งกลับข้อความแสดงข้อผิดพลาดแจ้งว่าไม่พบโมดูล libphp7.so เพียงคัดลอกไปยังเส้นทางที่ระบุ จาก /opt/php-7.0.0RC1/.libs/libphp7.so

วิธีทดสอบการติดตั้ง PHP/Apache แบบคลาสสิกคือการใช้ไฟล์ phpinfo() สร้างไฟล์ชื่อ test.php โดยมีเนื้อหาต่อไปนี้ในรูทเอกสารของเว็บเซิร์ฟเวอร์ (/var/www/html ในทั้งสองรูปแบบ):


<?php
phpinfo();
?>

และเปิดเบราว์เซอร์ในไคลเอนต์ภายในเครือข่ายของคุณเพื่อทดสอบ:


http://localhost/test.php
OR
http://IP-address/test.php

สรุป

ในบทความนี้ เราได้อธิบายวิธีการติดตั้ง PHP 7 จากซอร์สโค้ด ซึ่งเป็น RC ใหม่ล่าสุดของภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ยอดนิยมนี้ ซึ่งมีจุดมุ่งหมายเพื่อปรับปรุงประสิทธิภาพด้วยค่าที่ไม่เคยมีมาก่อน จนกว่าจะถึงระดับเสถียรใน พฤศจิกายน ของปีนี้ 2015 ขอแนะนำให้ อย่างยิ่ง ไม่ ใช้รุ่นนี้ในสภาพแวดล้อมการใช้งานจริง

หากคุณมีคำถาม/ความคิดเห็น/ข้อเสนอแนะเกี่ยวกับบทความนี้ โปรดแจ้งให้เราทราบโดยใช้แบบฟอร์มด้านล่าง