zoukankan      html  css  js  c++  java
  • Linux上编译安装PHP

    这篇文章主要介绍了关于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. 解压该压缩文件

    1

    # tar -zxf php-5.6.15.tar.gz

    4. 上一步产生 php-5.6.15 目录,进入该目录,执行该目录下的 configure 可执行文件(其中在Linux命令中代表换行),安装前必须先安装MySQL及其他一些扩展库才行,具体可以根据安装过程的报错信息补充没有安装的拓展

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    # ./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

    相对应的解释如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    --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 下

    1

    # 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等命令

    1

    # vi /etc/profile

    在打开的文件末尾加上 export PATH="$PATH:/usr/local/php-5.6.15/bin" ,保存文件后重启系统即可

    8. 运行php,PHP的运行相当于运行php-fpm

    1

    # /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环境相同即可。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    #!/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 命令进行操作

    1

    2

    3

    # service php-fpm start 启动php-fpm,

    # service php-fpm stop 关闭php-fpm,

    # service php-fpm restart重启php-fpm

    使用chkconfig 命令添加、删除和查看系统开机自启动服务

    1

    2

    3

    # chkconfig --list 显示开机可以自动启动的服务

    # chkconfig --add php-fpm 添加开机自动启动php-fpm服务

    # chkconfig --del php-fpm 删除开机自动启动php-fpm服务

    好了,关于PHP的安装基本上就完成啦~

  • 相关阅读:
    C语言:计算并输出S=1+(1+2^0.5)+(1+2^0.5+3^0.5)...+(1+2^0.5+3^0.5+...+n^0.5)
    C语言:计算输出给定数组中每相邻两个元素的平均值的平方根之和。
    C语言:把分数最低的学生数据放入数组b所指的数组中,-从键盘输入若干字符串,写入文件myfile4中,用-1作字符输入结束的标志,
    C语言:根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,-主函数中放入一个带头节点的链表结构中,h指向链表的头节点。fun函数找出学生的最高分-使用插入排序法对字符串中的字符进行升序排序。-从文件中找到指定学号的学生数据,读入次学生数据,
    C语言:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,
    负载测试、压力测试和性能测试的区别
    一个有广告的纸杯子的测试用例设计(黑盒测试用例设计)
    java中Comparator的用法
    java 判断字符串中 大小写字母 数字和其他字符个数方法
    java Socket和ServerSocket多线程编程
  • 原文地址:https://www.cnblogs.com/whowhere/p/10154385.html
Copyright © 2011-2022 走看看