Linux上編譯安裝PHP

來源:互聯網
上載者:User
這篇文章主要介紹了關於Linux上編譯安裝PHP,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

之前在伺服器上編譯安裝了PHP運行環境,但是安裝完過了一段時間就差不多忘記了,只是零零星星記得一些簡單步驟,現在又重新在新的伺服器上安裝了一遍,將安裝過程記錄下來,方便以後查看,同時也提供給新手做個參考。

1. 首先要下載PHP的源碼安裝包,可以到PHP官網下載 http://php.net/,進入官網後點擊導覽列的“Downloads”選項,即可計入下載頁面,這時候你可以根據地區選擇下載的伺服器,這裡我選用 cn2.php.net 下載

2. 下載完成後使用常用的ftp工具將源碼包上傳到要安裝PHP的伺服器上,這裡我們暫放在 /tmp 目錄下

(註:也可以在Linux下直接使用Linux 檔案下載工具wget 進行下載,形式為wget -O php-5.6.15.tar.gz http://cn2.php.net/get/php-5.6.15.tar.gz/from/this/mirror,此處應該使用-O 對下載的檔案進行命名,否則下載的檔案名稱將為“mirror”,另外,還可以使用搜狐的鏡像地址下載 http://mirrors.sohu.com/php/***)

3. 解壓該壓縮檔

# tar -zxf php-5.6.15.tar.gz

4. 上一步產生 php-5.6.15 目錄,進入該目錄,執行該目錄下的 configure 可執行檔(其中\在Linux命令中代表換行),安裝前必須先安裝MySQL及其他一些擴充庫才行,具體可以根據安裝過程的報錯資訊補充沒有安裝的拓展

# ./configure \--prefix=/usr/local/php-5.6.15 \--with-config-file-path=/usr/local/php-5.6.15/etc \--with-mysqli \--with-xmlrpc \--with-openssl \--with-zlib \--with-freetype-dir \--with-png-dir \--with-jpeg-dir \--with-gd \--with-iconv=/usr/local/libiconv \--enable-sockets \--enable-zend-multibyte \--enable-soap \--enable-mbstring \--enable-static \--enable-gd-native-ttf \--with-mcrypt \--with-mhash \--with-curl \--with-xsl \--enable-ftp \--with-libxml-dir \--enable-pcntl \--enable-bcmath \--enable-fpm

相對應的解釋如下:

--prefix=/usr/local/php-5.6.15 \ (指定PHP的安裝目錄)--with-apxs2=/usr/sbin/apxs \ (使PHP支援Apache伺服器,使用yum安裝Apache時,apxs預設在usr/sbin/目錄下)--with-config-file-path=/usr/local/php-5.6.12/etc \ (指定PHP的設定檔php.ini目錄)--with-mysqli[=DIR] \ (指定mysqli的安裝路徑,使PHP支援mysqli,PHP最新版本已經不再支援mysql擴充了)--with-xmlrpc \ (使PHP支援XML-RPC,即XML遠程方法調用)--with-openssl \ (使PHP編譯安裝openssl模組,加密傳輸https時用到的)--with-zlib[=DIR] \ (配置gd庫的支援包zlib,zlib是提供資料壓縮用的函式庫)--with-freetype-dir[=DIR] \ (配置gd庫的支援包freetype,FreeType庫是一個完全免費(開源)的、高品質的且可移植的字型引擎)--with-png-dir[=DIR] \ (配置gd庫的支援包libpng)--with-jpeg-dir[=DIR] \ (配置gd庫的支援包libjpeg)--with-gd \ (靜態編譯gd庫)--with-iconv=/usr/local/libiconv \ (iconv命令可以將一種已知的字元集檔案轉換成另一種已知的字元集檔案)--enable-sockets \ (開啟對socket的支援)--enable-zend-multibyte \ (支援zend的多位元組)--enable-soap \ (開啟對soap的支援,簡易物件存取通訊協定 (SOAP)是交換資料的一種協議規範,是一種輕量的、簡單的、基於XML的協議,它被設計成在WEB上交換結構化的和固化的資訊)--enable-mbstring \ (開啟對多位元組多字串的支援)--enable-static \ (產生靜態連結庫,在編譯過程中,就將靜態庫中的代碼載入程式,由此產生出的可執行程式在運行中不再需要靜態庫,但因為庫中的程式碼被複製進目標程式中,因此產生的程式體積會比較大)--enable-gd-native-ttf \  (支援TrueType字串函數庫)--with-mcrypt \ (mcrypt演算法擴充)--with-mhash \  (mhash演算法擴充)--with-curl \ (開啟curl瀏覽工具的支援)--with-xsl \ (開啟XSLT 檔案支援,擴充了libXML2庫 ,需要libxslt軟體)--enable-ftp \ (開啟對ftp的支援)--with-libxml-dir \ (開啟libxml2庫的支援)--enable-pcntl \ (擴充可以支援php的多線程操作)--enable-bcmath \ (開啟圖片大小調整,用到zabbix監控的時候用到了這個模組)--enable-fpm (開啟對php-fpm的支援)

(註:上述為編譯安裝的配置選項相對比較完整,可以選擇性配置,但也有一些配置選項沒有給出,另外,由於php已經整合GD庫,但前提是支援包應事先安裝,如zlib, png, jpeg, freetype等)

5. 針對上述安裝過程中出現的報錯,找出未安裝的擴充,使用yum或下載源碼包進行手動編譯安裝進行安裝後再重新編譯安裝PHP

6. PHP安裝完成,進行配置,進入/usr/local/php-5.6.15/etc 中,發現沒有php.ini檔案,這時應該將安裝包目錄 /tmp/php-5.6.15 下的php.ini-production 複製到 /usr/local/php-5.6.15/etc 下

# cp /tmp/php-5.6.15/php.ini-production php.ini

(註:php.ini-development 適合開發程式使用,即測試用,php.ini-production 擁有較高的安全性設定,則適合上線當產品使用,一般將php.ini-production修改為php.ini,確保測試環境(本地)與正式環境(線上)一致。這裡關於PHP的相關配置這裡不做闡述)

7. 將 /usr/local/php-5.6.15/bin 添加到系統內容變數中,方便使用php和phpize等命令

# vi /etc/profile

在開啟的檔案末尾加上 export PATH="$PATH:/usr/local/php-5.6.15/bin" ,儲存檔案後重啟系統即可

8. 運行php,PHP的運行相當於運行php-fpm

# /usr/local/php-5.6.15/bin/php-fpm -c /usr/local/php-5.6.15/etc/php.ini -y /usr/local/php-5.6.15/etc/php-fpm.conf

最後,簡單說下PHP的開機啟動設定,因為一般的開機啟動軟體都應該被作為一項系統服務儲存在 /etc/rc.d/init.d 中,所以php-fpm也應該作為一個可運行檔案存在於該目錄下(與MySQL的mysqld以及Apache的httpd相似),然而進入該目錄下並未發現php-fpm,沒關係,那我們就自己寫一個指令碼吧。具體指令碼如下,可以直接在 /etc/rc.d/init.d 下建立一個php-fpm檔案,複製下面代碼,修改響應配置與自己所安裝的PHP環境相同即可。

#!/bin/bash## Startup script for the PHP-FPM server.## chkconfig: 345 85 15# description: PHP is an HTML-embedded scripting language# processname: php-fpm# config: /usr/local/php-5.6.15/etc/php.ini # Source function library.. /etc/rc.d/init.d/functions PHP_PATH=/usr/local/php-5.6.15DESC="php-fpm daemon"NAME=php-fpm# php-fpm路徑DAEMON=$PHP_PATH/sbin/$NAME# 設定檔路徑CONFIGFILE=$PHP_PATH/etc/php-fpm.conf# PID檔案路徑(在php-fpm.conf設定)PIDFILE=$PHP_PATH/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAME # Gracefully exit if the package has been removed.test -x $DAEMON || exit 0 rh_start() {  $DAEMON -y $CONFIGFILE || echo -n " already running"} rh_stop() {  kill -QUIT `cat $PIDFILE` || echo -n " not running"} rh_reload() {  kill -HUP `cat $PIDFILE` || echo -n " can't reload"} case "$1" in  start)        echo -n "Starting $DESC: $NAME"        rh_start        echo "."        ;;  stop)        echo -n "Stopping $DESC: $NAME"        rh_stop        echo "."        ;;  reload)        echo -n "Reloading $DESC configuration..."        rh_reload        echo "reloaded."  ;;  restart)        echo -n "Restarting $DESC: $NAME"        rh_stop        sleep 1        rh_start        echo "."        ;;  *)         echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2         exit 3        ;;esacexit 0

之後可以通過使用service 命令進行操作

# service php-fpm start 啟動php-fpm,# service php-fpm stop 關閉php-fpm,# service php-fpm restart重啟php-fpm

使用chkconfig 命令添加、刪除和查看系統開機自啟動服務

# chkconfig --list 顯示開機可以自動啟動的服務 # chkconfig --add php-fpm 添加開機自動啟動php-fpm服務 # chkconfig --del php-fpm 刪除開機自動啟動php-fpm服務

好了,關於PHP的安裝基本上就完成啦~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.