前面咱們已經編譯安裝了httpd服務,那麼如今,咱們就來編譯php吧~~php
php簡介html
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸取了C語言、Java和Perl的特色,利於學習,使用普遍,主要適用於Web開發領域。mysql
跟web服務的結合主要可使用CGI、apache module、fcgi的方式結合,CGI由於效率問題已經算是被淘汰的技術了,而將php做爲apache module的話,配置相對簡單,但效率不是最好的,由於apache再加載靜態資源的時候也會加載php-module,而將php以fcgi的方式貌似成爲了如今的主流選擇,這篇文章主要記錄下編譯Php做爲apache模塊的步驟。linux
下載phpweb
訪問php的官方網站,能夠看到如今主要有三個分支5.6.x 7.0.x 7.1.x,我選擇5.6.x來編譯。sql
cd ~ wget http://hk1.php.net/distributions/php-5.6.31.tar.gz
配置並編譯apache
先安裝兩個包 yum install libxml2-devel openssl-devel ,這兩個包在後面編譯會被依賴。app
tar -xf php-5.6.31.tar.gz cd php-5.6.31 ./configure --prefix /usr/local/php56 --with-apxs2=/usr/local/httpd24/bin/apxs --with-config-file-path=/etc/ --with-config-file-scan-dir=/etc/php.d --with-libxml-dir --with-openssl --with-zlib --enable-mbstring --with-mysql make -j 2 && make install
關於這些選項能夠執行./configure --help查看幫助,由於小弟是個菜鳥,因此不少東西沒啓用抱歉
或者你也能夠在生產環境中的phpinfo()函數中得到編譯選項,以下圖所示
函數
注意:如遇下面報錯請執行make clean 後再編譯便可學習
libtool: link: `ext/date/php_date.lo' is not a valid libtool object
建立php配置文件
cp php.ini-development /etc/php.ini //此文件在源碼目錄下 mkdir /etc/php.d/
修改apache配置
1.檢查httpd.conf中是否加載了相應模塊,這裏程序應該幫咱們加過了
LoadModule php5_module modules/libphp5.so
2.添加以下配置到httpd.conf
SetHandler application/x-httpd-php
3.重啓httpd服務
apachectl restart
測試
1.在web目錄下建立test.php文件
echo "< ?php phpinfo() ?>" > /usr/local/httpd24/htdocs//test.php //這裏填相應的web根目錄便可
2.訪問 http://IP/tset.php
編譯php擴展模塊
php源碼包中有一個ext目錄,這裏存放了全部當前版本可用的擴展模塊,若是在編譯時沒有爲php啓用某些支持,能夠編譯擴展模塊來額外添加支持。
1.編譯模塊
cd /root/php-5.6.31/ext/mcrypt export PATH=$PATH:/usr/local/php56/bin/ //這裏我臨時改下PATH環境變量,推薦加入到配置文件中 phpize ./configure make make install
看到相似以下提示即說明安裝成功
Installing shared extensions: /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/
2.修改配置
修改php.ini 將其extension-dir修改到咱們安裝的這個目錄
echo "extension_dir = \"/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/\"" >> /etc/php.ini echo "extension=mcrypt.so" >> /etc/php.ini
3.測試
重啓httpd
apachectl restart
再次訪問phpinfo頁面,看到以下圖即爲安裝成功