Linux 6 下編譯安裝 PHP 5.6實(shí)例詳解
Linux 6 下編譯安裝 PHP 5.6實(shí)例詳解
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預(yù)處理器”)是一種通用開(kāi)源腳本語(yǔ)言。語(yǔ)法吸收了C語(yǔ)言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開(kāi)發(fā)領(lǐng)域。PHP以其開(kāi)發(fā)源代碼,免費(fèi),快捷,跨平臺(tái),高效,面向?qū)ο?,?qiáng)大的動(dòng)態(tài)圖像創(chuàng)建等功能深受廣大開(kāi)發(fā)者的喜愛(ài)。本文描述基于CentOS 6.7下編譯安裝PHP 5.6.9,同樣也適用于CentOS 7下安裝。
一、相關(guān)依賴包安裝
1、演示環(huán)境
# more /etc/redhat-release
CentOS release 6.7 (Final)
2、擴(kuò)展支持(mcrypt、mhash擴(kuò)展和libevent)
如果想讓編譯的php支持mcrypt、mhash擴(kuò)展和libevent,需要安裝以下包
libmcrypt
libmcrypt-devel
mhash
mhash-devel
說(shuō)明:
mcrypt擴(kuò)展庫(kù)可以實(shí)現(xiàn)加密解密功能,就是既能將明文加密,也可以密文還原。
mhash是基于離散數(shù)學(xué)原理的不可逆向的php加密方式擴(kuò)展庫(kù),其在默認(rèn)情況下不開(kāi)啟。
mhash的可以用于創(chuàng)建校驗(yàn)數(shù)值,消息摘要,消息認(rèn)證碼,以及無(wú)需原文的關(guān)鍵信息保存(如密碼)等。
centos源不能安裝libmcrypt-devel,由于版權(quán)的原因沒(méi)有自帶mcrypt的包
可以使用第三方源,這樣還可以使用yum來(lái)安裝
安裝第三方y(tǒng)um源
# wget http://www.atomicorp.com/installers/atomic
# sh ./atomic
使用yum命令安裝
# yum install php-mcrypt libmcrypt libmcrypt-devel mhash mhash-devel
3、libevent相關(guān)包
可以根據(jù)需要安裝libevent,系統(tǒng)一般會(huì)自帶libevent,但版本有些低。因此可以升級(jí)安裝如下兩個(gè)rpm包。
# yum install libevent libevent-devel
說(shuō)明:
libevent是一個(gè)異步事件通知庫(kù)文件,其API提供了在某文件描述上發(fā)生某事件時(shí)或其超時(shí)時(shí)執(zhí)行回調(diào)函數(shù)的機(jī)制
它主要用來(lái)替換事件驅(qū)動(dòng)的網(wǎng)絡(luò)服務(wù)器上的event loop機(jī)制。
目前來(lái)說(shuō), libevent支持/dev/poll、kqueue、select、poll、epoll及Solaris的event ports。
4、支持xml的相關(guān)包
支持xml的rpm包
bzip2 是一個(gè)基于Burrows-Wheeler 變換的無(wú)損壓縮軟件能夠高效的完成文件數(shù)據(jù)的壓縮
libcurl主要功能就是用不同的協(xié)議連接和溝通不同的服務(wù)器,也就是相當(dāng)封裝了的sockPHP
libcurl允許你用不同的協(xié)議連接和溝通不同的服務(wù)器
# yum install libxml2 libxml2-devel bzip2-devel libcurl-devel
5、圖形相關(guān)的rpm包
通常對(duì)應(yīng)的錯(cuò)誤提示:JIS-mapped Japanese font support in GD
# yum install libjpeg-devel libpng-devel freetype-devel
二、編譯安裝php-5.6.9
首先下載源碼包至本地目錄,下載位置http://mirrors.sohu.com/php/
# pwd
/usr/local/src
# tar -xf php-5.6.9.tar.gz
# cd ..
# ~ln -sv ./src/php-5.6.9 php~ ###說(shuō)明:考慮編譯后的簡(jiǎn)潔,此命令移除@20160729
# cd php/
# ./configure \ ###說(shuō)明:編譯的內(nèi)容被調(diào)整@20160729
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--enable-fpm \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir
###有關(guān)編譯配置項(xiàng)的詳細(xì)描述:https://segmentfault.com/a/1190000002717262
# make && make install
###以下為安裝完畢之后的提示信息
Installing shared extensions:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
Installing PHP CLI binary: /usr/local/php/bin/
Installing PHP CLI man page: /usr/local/php/php/man/man1/
Installing PHP FPM binary: /usr/local/php/sbin/
Installing PHP FPM config: /usr/local/php/etc/
Installing PHP FPM man page: /usr/local/php/php/man/man8/
Installing PHP FPM status page: /usr/local/php/php/php/fpm/
Installing PHP CGI binary: /usr/local/php/bin/
Installing PHP CGI man page: /usr/local/php/php/man/man1/
Installing build environment: /usr/local/php/lib/php/build/
Installing header files: /usr/local/php/include/php/
Installing helper programs: /usr/local/php/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php/php/man/man1/
page: phpize.1 ### Author : Leshami
page: php-config.1 ### Blog : http://blog.csdn.net/leshami
Installing PEAR environment: /usr/local/php/lib/php/
[PEAR] Archive_Tar - installed: 1.3.12
[PEAR] Console_Getopt - installed: 1.3.1
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util - installed: 1.2.3
[PEAR] PEAR - installed: 1.9.5
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/usr/local/php/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/phar
Installing PDO headers: /usr/local/php/include/php/ext/pdo/
###php配置
php.ini是php運(yùn)行核心配置文件
php-fpm.conf是php-fpm進(jìn)程服務(wù)的配置文件
# cp php.ini-production /usr/local/php/etc/php.ini
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
###fpm測(cè)試php配置
# /usr/local/php/sbin/php-fpm -t
[23-May-2016 20:03:52] NOTICE:
configuration file /usr/local/php/etc/php-fpm.conf test is successful
# chkconfig --add php-fpm
# chkconfig php-fpm on
# service php-fpm start
Starting php-fpm done
# ps -ef|grep php
root 45690 1 0 20:07 ? 00:00:00 php-fpm: master process(/usr/local/php/etc/php-fpm.conf)
nobody 45691 45690 0 20:07 ? 00:00:00 php-fpm: pool www
nobody 45692 45690 0 20:07 ? 00:00:00 php-fpm: pool www
root 45694 3441 0 20:07 pts/4 00:00:00 grep php
# netstat -nltp|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 45690/php-fpm
三、配置apache訪問(wèn)PHP
###開(kāi)啟以下模塊
# vim /etc/httpd24/httpd.conf ###注意此處,我這里是單獨(dú)編譯安裝的httpd2.4版本,所以路徑有所不同
LoadModule proxy_module modeles/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off ###關(guān)閉正向代理,開(kāi)啟下行的反向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1
# service httpd24 restart
Stopping httpd24: [ OK ]
Starting httpd24: [ OK ]
四、驗(yàn)證PHP
###編寫一個(gè)php頁(yè)面測(cè)試 # echo " > <html> > <h1>This is a php test page.</h1> > <?php > phpinfo(); > ?> > </html>">>/usr/local/apache/htdocs/index.php ###測(cè)試PHP # curl -I http://localhost:90/index.php HTTP/1.1 200 OK Date: Fri, 15 Jul 2016 03:16:50 GMT Server: Apache/2.4.9 (Unix) X-Powered-By: PHP/5.6.9 Content-Type: text/html; charset=UTF-8
五、對(duì)于本機(jī)未安裝mysql數(shù)據(jù)庫(kù)的情形(補(bǔ)充@20160718)
PHP5.3以上版本,為了鏈接MySQL數(shù)據(jù)庫(kù),可以指定mysqlnd,這樣在本機(jī)就不需要先安裝MySQL或MySQL開(kāi)發(fā)包。 mysqlnd從php 5.3開(kāi)始可用,可以編譯時(shí)綁定到它(而不用和具體的MySQL客戶端庫(kù)綁定形成依賴)。 從PHP 5.4開(kāi)始,對(duì)于未明確指定--with-mysql的情形,mysql本地驅(qū)動(dòng)將會(huì)被安裝。 可以參考如下配置: ./configure \ ###修改@20160729 .......... \ ###參數(shù)同上,僅僅是mysql相關(guān)參數(shù)值設(shè)置為mysqlnd --with-mysql \ ###相當(dāng)于該參數(shù)值為mysqlnd --with-mysqli \ ###相當(dāng)于該參數(shù)值為mysqlnd --with-pdo-mysql \ ###相當(dāng)于該參數(shù)值為mysqlnd 有關(guān)mysqlnd可以參考: http://php.net/manual/zh/mysqli.overview.php#mysqli.overview.mysqlnd
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
CentOS7 LNMP+phpmyadmin環(huán)境搭建 第二篇LNMP環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了CentOS7 LNMP+phpmyadmin環(huán)境搭建,第二篇LNMP環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
詳解ubuntu搭建Java開(kāi)發(fā)環(huán)境
這篇文章主要介紹了ubuntu搭建Java開(kāi)發(fā)環(huán)境,并且編寫了第一個(gè)Hello world程序,感興趣的小伙伴們可以參考一下2015-12-12
centos 7 修改sshd | 禁止 root登錄及sshd端口腳本定義
這篇文章主要介紹了centos 7 修改sshd | 禁止 root登錄及sshd端口腳本定義,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
ubuntu開(kāi)機(jī)后ROS程序自啟動(dòng)問(wèn)題
這篇文章主要介紹了ubuntu開(kāi)機(jī)后ROS程序自啟動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

