這篇文章主要介紹了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的支持,简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于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.15 DESC="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.pid SCRIPTNAME=/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 ;; esac exit 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的安装基本上就完成啦~
以上是Linux上編譯安裝PHP的詳細內容。更多資訊請關注PHP中文網其他相關文章!