大家都知道,centos6以上yum都自带5.4以上的php版本,可是一些老系统必须安装 php-5.3该怎么办呢。下面我来教大家一步步编译安装。看看我踩过的坑。

第一步: 网上下载php5.3的源码包   wget   http://cn2.php.net/distributions/php-5.3.28.tar.bz2 或者直接在php.net里面下载好后直接传到服务器

第二步:添加依赖运用

 yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses curl openssl-devel gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel

第三步:解压下载的php源码包。

     这里我是在网上下载的php-5.3.28.tar.bz2  以bz2结尾的文件。普通的压缩tar -zxvf php-5.3.28.tar.bz2 肯定是不行的,因为bz2是一种更为有效的压缩方式  。需要安装 yum install bzip2,否则报错。

第四步:配置php

cd php-5.3.28

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-sysvsem --enable-sockets --enable-pcntl --enable-mbstring --enable-mysqlnd --enable-opcache --enable-shmop --enable-zip --enable-ftp --enable-gd-native-ttf --enable-wddx --enable-soap

期间报错 configure: error: xml2-config not found. Please check your libxml2

解决方式:yum -y install libxml2 libxml2-devel

再走一遍 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-sysvsem --enable-sockets --enable-pcntl --enable-mbstring --enable-mysqlnd --enable-opcache --enable-shmop --enable-zip --enable-ftp --enable-gd-native-ttf --enable-wddx --enable-soap

期间报错:configure:error:no acceptable cc found in $path

解决方式:yum install gcc gcc-c++ gcc-g77

第五步 编译 make

期间报错: 错误: 提领指向不完全类型的指针*/php*/ext/dom/node.c:1955:5: 错误: 提领指向不完全类型的指针

解决方式: curl -o php-5.3.28.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt

cd php-5.3.28

patch -p0 -b < ./php-5.3.28.patch

再走一遍编译make,报错 libtool: link: `ext/date/php_date.lo' is not a valid libtool object

解决方式:make clean

再走一遍make

第六步 安装make install

执行成功后,cp /usr/local/php/etc/php-fpm.conf.default php-fpm.conf

cp /root/php-5.3.28/php.ini-development /usr/local/php/etc/php.ini-development

cp /usr/local/php/etc/php.ini-development /usr/local/php/etc/php.ini

再将php-fpm的启动程序 php-fpm 拷贝一份

cp /root/php-5.3.28/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

给权限

chmod +x /etc/init.d/php-fpm

加入开机启动

chkconfig --add php-fpm

设置启动等级

chkconfig --level 35 php-fpm on

第七步:

启动service php-fpm start

期间又报错,这里我已经崩溃了 Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running

解决方式:

ps -ef|grep php-fpm

先关掉所有进程

killall php-fpm

既然是pid 没找到 ,那我进入/usr/php/etc/php-fpm.conf 这里面看看 找到 ;pid = run/php-fpm.pid 去掉前面的分号

再次启动 发现又报错

pm.max_spare_servers(0) must be a positive value在这里我已经不想再继续了,完全凌乱了,再次找到百度大大,

解决方式:vi /usr/local/php/etc/php-fpm.conf

pm.start_servers=20

pm.min_spare_servers=5

pm.max_spare_servers=35

将这3行 的注释去掉

,再次启动 service php-fpm start

完美 手工 !!!

此篇文章献给和我一样奋斗在事业单位的程序员们,因为事业单位大多数老系统,不能随意更换。大家一起加油!

ps:php -V 查看不到php版本 ,那是因为你没有把php放在环境变量里面 export PATH=$PATH:/usr/local/php/bin

再次echo $PATH,可以看到成功了。新建个php文件 php php文件 运行php 发现有结果证明成功了。写到这里 nginx 和 mysql 直接yum 安装吧!

centos7的编译安装php5.3 (针对老系统必须安装php5.3才能运行)的更多相关文章

  1. NSIS安装程序制作工具判断系统是否安装.NET

    前段时间忙了很久的系统总算上线了,由于是WinForm程序不能整个文件夹的发给客户使用.所以必须要打包,记得以前在VS2005中是自带部署功能的.现在换了VS2013那个部署功能完全弄不清方向.最后在 ...

  2. 安装Windows和Ubuntu双系统--Ubuntu安装过程识别不了硬盘

    Linux识别不了固态硬盘 安装过程: 自己本身的是Windows 10,一块125g 固态 ,一块1T的机械硬盘. 通过rufus 制作ubuntu的启动盘 在BIOS中关闭电脑的安全启动选项,并且 ...

  3. Linux+Apache2.4+PHP5.6+MySQL5.6源码安装步骤

    一.安装Apache 若要安装apache服务器软件,需要安装以下几个依赖软件 apr-1.4.6.tar.gz 下载地址:http://apr.apache.org/ apr-util-1.4.1. ...

  4. Windows系统的安装

    一.写在前面        笔者最近因为换工作,在家待业甚感无聊,于是想要整理一些在Windows系统的一些安装方法和下载资源,一来给自己做个备忘,二来把一些不成熟的想法分享出去,希望大家予以指正. ...

  5. PXE与cobbler实现系统自动安装

    安装操作系统的流程事实上并不复杂,如果你要给三五台服务器安装系统那么我们手工去安装即可.但是当我们要部署的是大型机房的操作系统的时候显然手动安装去一台一台的点,是不现实的.尤其现在互联网行业高速发展, ...

  6. JDK8在windows系统下安装

    一.下载 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html#JDK8 目前大部分公司内部使用的还是jdk ...

  7. Linux运维一:生产环境CentOS6.6系统的安装

    CentOS 6.6 x86_64官方正式版系统(64位)下载地址 系统之家:http://www.xitongzhijia.net/linux/201412/33603.html 百度网盘:http ...

  8. linux linux系统的安装及使用

    linux  linux系统的安装及使用 一.linux系统中安装vm-tools工具: 步骤: 1.在vmware workstation软件中:虚拟机-安装vmware-tools-状态栏会提示- ...

  9. linux系统中安装MySQL

    linux系统中安装MySQL 检查原来linux系统中安装的版本 rpm -qa | grep mysql 将其卸载掉 以 mysql-libs-5.1.71-1.el6.x86_64 版本为例 r ...

随机推荐

  1. UOJ #277 BZOJ 4739 定向越野 (计算几何、最短路)

    手动博客搬家: 本文发表于20181208 14:39:01, 原地址https://blog.csdn.net/suncongbo/article/details/84891710 哇它居然显示出图 ...

  2. EXTJS之Ext.util.Observable自定义事件

    暂时还不会用Ext.mixin.Observable, 催悲的测试了近两个小时.这TMD的语法差距也太大了啊.. 在新版EXTJS里,已去除了addEvents. 弄个出来,大概知道下吧. <! ...

  3. 【ACM】poj_3981_字符串替换_201307271019

    字符串替换Time Limit: 1000MS  Memory Limit: 65536K Total Submissions: 8447  Accepted: 3988 Description 编写 ...

  4. ubuntu-kill命令-杀死进程

    显示进程pid ps -A 杀进程的命令 kill -s 9 xxx(进程pid)

  5. HDU 3644

    模拟退火算法.... 这道题,呃.我怎么感觉他就是随机的.同一个代码,时而AC,时而WA.其实还真的是随机的.呵呵呵呵呵...因为下降火太快了,没办法,而降得慢又会...TLE,虽然精度提高了. 敢问 ...

  6. HDU 1515

    简单题,直接用STACK模拟整个过程. 模拟出栈时,应注意保护现场,等到递归完成后返回. #include <iostream> #include <string.h> #in ...

  7. keil uV4一个project内各个后缀名文件的作用

    1 test1 无后缀文件,这个是终于生成的文件.仅仅要有这个文件KEIL就能够软件仿真,不能打开 2 test1.hex 这个文件能够直接下载到单片机里,他就是从无后缀文件test1里提取的,去掉了 ...

  8. [React Native] Reduce Long Import Statements in React Native with Absolute Imports

    In large React Native projects, it’s common to have long relative import paths like: import MyCompon ...

  9. 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(三)

    关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客 第一篇: 怎样在windows平台搭建Mongo数据库复制集 第二篇: 数据同步和故障自适应測试 在本篇里面,咱们重 ...

  10. bzoj2819: Nim(博弈+树剖)

    2819: Nim 题目:传送门 题解: 很久之前学博弈的时候看过的一道水题,其实算不上博弈吧... 直接套上一个裸的树剖啊,把路径上的点值全都xor(xor满足结合率所以就不管那么多随便搞啦) do ...