CentOS5.5上编译安装 PHP 5.3.6

CentOS 5.6一直没发布,CentOS 5.5的PHP5.1.6不支持json/hash,因为正研究Postfix+Dovecot邮件系统,webmail采用的 RoundCube   新版本(v0.5)要求PHP版本不小于5.2.1,于是决定编译安装最新版PHP。PHP前几天被入侵据说v5.3.6代码被污染,不过用来做研究测试应该没问题。

 

  1. 先卸载本机已经安装的PHP包,这些软件包将会通过接下来的编译方式安装,安装必须软件
    # yum remove php php-\*

    如果不需要pgsql数据库则可以去掉postgresql相关包
    # yum install -y httpd-devel libtool-ltdl libtool-ltdl-devel openssl-devel curl-devel  \
          libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel \
          libc-client libc-client-devel  gd gd-devel libmcrypt libmcrypt-devel \
          sqlite sqlite-devel mysql-devel libicu libicu-devel pcre-devel \
          postgresql84 postgresql84-libs postgresql84-server postgresql84-devel \
    如果不安装 libtool-ltdl-devel编译时会出错,所以要么安装这个包要么执行以下命令:
    # cd /usr/lib
    # ln -s libltdl.so.3.1.4 libltdl.so
    libicu是 --enable-intl           Enable internationalization support 需要的包

    如果需要pspell拼写支持需要下载编译安装以下两个文件( ./configure && make && make install)
    ftp://ftp.gnu.org/gnu/aspell/aspell-0.60.6.tar.gz
    ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-7.1-0.tar.bz2
    网站是 http://aspell.net/ 



  2. 下载源代码到 src 目录并解压:
    # cd /usr/local/src
    # wget http://cn.php.net/get/php-5.3.6.tar.bz2/from/this/mirror
    # tar -xjf php-5.3.6.tar.bz2

  3. 配置安装参数
    ./configure --build=i686-redhat-linux-gnu --host=i686-redhat-linux-gnu \
    --target=i686-redhat-linux-gnu  --with-apxs2=/usr/sbin/apxs \
    --prefix=/usr/local --exec-prefix=/usr/local --with-exec-dir=/usr/local/bin \
    --sysconfdir=/etc  --libdir=/usr/local/lib/php --with-libdir=lib \
    --sbindir=/usr/local/sbin --sharedstatedir=/usr/com --datadir=/usr/local/share \
    --includedir=/usr/local/include --libexecdir=/usr/local/libexec \
    --localstatedir=/var  \
    --mandir=/usr/local/share/man --infodir=/usr/local/share/info \
    --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d \
    --with-pic  --with-curl=shared  --with-freetype-dir --with-png-dir  \
    --with-gettext --with-gmp --with-iconv --with-jpeg-dir --with-png-dir \
    --with-openssl --with-layout=GNU --with-libxml-dir \
    --with-pcre-regex=/usr \
    --with-mcrypt=shared --with-mhash --with-zlib --with-bz2=shared \
    --with-pdo-mysql --with-mysql --with-mysql-sock=/var/lib/mysql/mysql.sock \
    --with-sqlite=shared --with-pdo-sqlite=shared \
    --enable-sqlite-utf8 --with-kerberos --with-imap --with-imap-ssl \
    --with-pear --with-gd --enable-gd-native-ttf --enable-calendar=shared \
    --enable-exif --enable-ftp --enable-sockets --enable-bcmath \
    --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-intl \
    --enable-mbstring --enable-zend-multibyte --enable-zip \
    --without-unixODBC --enable-tokenizer \ 
    --enable-mbregex --without-pear
    如果未安装pspell,则删除最后一行。
    非RHEL/CentOS系统可以省略 --build,--host,--target 参数,程序会自动判断(LINUX一般为i686-pc-linux-gnu)。如果没安装pgsql或者不需要pgsql的支持可以删除相关参数(共2个)。 bz2, calendar, curl, mcrypt, pdo_sqlite, sqlite 这些模块采用动态编译,可采用下面将会提到的方法加载。 

  4. 编译并安装
    # make && make install  
  5. 编译安装php 的时候, 执行make报错误

    错误:make: *** [ext/mysqli/mysqli.lo] Error 1

    [root@localhost php-5.4.9]# mkdir /usr/local/webserver/mysql/include/mysql

     [root@localhost php-5.4.9]# ln -s /usr/local/webserver/mysql/include/* /usr/local/webserver/mysql/include/mysql
     [root@localhost php-5.4.9]# make ZEND_EXTRA_LIBS='-liconv'

    抛错:

    Generating phar.phar
    /usr/local/src/php-5.4.9/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
    make: *** [ext/phar/phar.php] Error 127

    解决方法:编辑Makefile 大约77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上 -liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv 然后重新再次 make 即可。


    #vi /etc/ld.so.conf

    在里面加上一行
    /usr/local/lib

    2.然后运行/sbin/ldconfig

    #/sbin/ldconfig

    编译make

    #make ZEND_EXTRA_LIBS='-liconv'

    抛错:

    Generating phar.phar
    chmod: cannot access `ext/phar/phar.phar': No such file or directory
    make: [ext/phar/phar.phar] Error 1 (ignored)

    Build complete.
    Don't forget to run 'make test'.
    此处可以忽略 不过解决办法如下

    #cd  ext/phar/
    #cp ./phar.php  ./phar.phar

    然后到php5.4文件夹

    #make ZEND_EXTRA_LIBS='-liconv'

    #make test

    #make install

  6. #cd  ext/phar/
    #cp ./phar.php  ./phar.phar

    然后到php5.4文件夹

    #make ZEND_EXTRA_LIBS='-liconv'

    #make test

    #make install

  7. 安装结果摘要,里面有几个主要的安装路径变量
    libtool: install: warning: remember to run `libtool --finish /usr/local/src/php-5.3.6/libs'
    [activating module `php5' in /etc/httpd/conf/httpd.conf]
    Installing PHP CLI binary: /usr/local/bin/
    Installing PHP CLI man page: /usr/local/share/man/man1/
    Installing shared extensions: /usr/local/lib/php/20090626/
    Installing build environment: /usr/local/lib/php/build/
    Installing header files: /usr/local/include/php/
    Installing helper programs: /usr/local/bin/
    program: phpize
    program: php-config
    Installing man pages: /usr/local/share/man/man1/
    Installing PEAR environment: /usr/local/share/pear/
     貌似要运行一次libtool --finish ....,不过我运行后也没什么奇特效果~

  8. 更新httpd配置文件以便apache能解析php文件
    # vim /etc/httpd/conf/httpd.conf
    添加以下内容
    AddType application/x-httpd-php .php 
    AddType application/x-httpd-php-source .phps
     
  9. 如果在卸载原有PHP之前没备份php.ini文件,那么可以从PHP编译目录中把 php.ini-production 拷贝到 /etc目录下并改名为 php.ini
    # mv /usr/local/src/php-5.3.6/php.ini-production /etc/php.ini
    添加或者更新相关设置,比如:
    extension_dir = "/usr/local/lib/php/20090626"
    include_path = ".:/usr/local/share/pear"

    # 以下六个模块可根据需要添加
    extension = bz2.so
    extension = calendar.so
    extension = curl.so
    extension = mcrypt.so
    extension = pdo_sqlite.so
    extension = sqlite.so

    max_execution_time = 30
    max_input_time = 60 
    memory_limit = 128M 
    variables_order = "EGPCS"
    register_globals = Off
    register_long_arrays = Off
    post_max_size = 30M
    upload_max_filesize = 30M
    mbstring.internal_encoding = UTF-8
    date.timezone = Asia/Chongqing
     
  10. 测试结果。在 /var/www/html 下面新建一个文件 phpinfo.php ,里面包含内容
    Php代码    收藏代码
    1. <?php  
    2. phpinfo();  
    3. ?>  
     重启apache服务
    # service httpd restart
    然后在浏览器打开 http://localhost/phpinfo.php 或者 http://serv-ip /phpinfo.php  文件查看php配置状况,这里ip地址为服务器地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值