zoukankan      html  css  js  c++  java
  • centos下升级php5.3到php5.6

    查看并删除原有的php5.3

    原文地址:http://blog.csdn.net/na_beginning/article/details/53414122

    查看原有的php版本:

    php -V
    
    • 1
    • 2

    查看已经安装的php的包:

    yum list installed | grep php
    
    • 1
    • 2

    可以看到如下原有的安装包:

    php-common.x86_64 0:5.3.3-38.el6   
    php-gd.x86_64 0:5.3.3-38.el6        
    php-ldap.x86_64 0:5.3.3-38.el6          
    php-mysql.x86_64 0:5.3.3-38.el6    
    php-odbc.x86_64 0:5.3.3-38.el6      
    php-pdo.x86_64 0:5.3.3-38.el6           
    php-pear.noarch 1:1.9.4-4.el6      
    php-pecl-apc.x86_64 0:3.1.9-2.el6   
    php-pecl-memcache.x86_64 0:3.0.5-4.el6  
    php-pgsql.x86_64 0:5.3.3-38.el6    
    php-soap.x86_64 0:5.3.3-38.el6      
    php-xml.x86_64 0:5.3.3-38.el6           
    php-xmlrpc.x86_64 0:5.3.3-38.el6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    全都是5.3.3-38.el6版本的。

    如果不删除原有的5.3的包,安装php5.6的包时会报冲突的错误。

    删除5.3的包:

    yum remove php.cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mysql.x86_64 php-odbc.x86_64 php-pdo.x86_64 php-pear.noarch php-pecl-apc.x86_64 php-pecl-memcache.x86_64 php-pgsql.x86_64 php-soap.x86_64 php-xml.x86_64 php-xmlrpc.x86_64
    
    • 1
    • 2

    删除后可以确认一下是否已经完成删除:

    yum list installed | grep php
    
    • 1
    • 2

    结果应该为空。

    安装php5.6的包

    由于centos 6.* 原有的rpm中不包含5.6的包的资源,所以需要先安装导入php的安装源:

    rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
    
    • 1
    • 2

    然后安装5.6相关的包:

    yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-odbc.x86_64 php56w-xml.x86_64 php56w-xmlrpc.x86_64 php56w-soap.x86_64
    
    • 1
    • 2

    全部安装成功后确认一下:

    yum list installed | grep php
    
    • 1
    • 2

    结果如下:

    php56w.x86_64            5.6.27-1.w6    @webtatic                               
    php56w-cli.x86_64        5.6.27-1.w6    @webtatic                               
    php56w-common.x86_64     5.6.27-1.w6    @webtatic                               
    php56w-gd.x86_64         5.6.27-1.w6    @webtatic                               
    php56w-ldap.x86_64       5.6.27-1.w6    @webtatic                               
    php56w-mbstring.x86_64   5.6.27-1.w6    @webtatic                               
    php56w-mysql.x86_64      5.6.27-1.w6    @webtatic                               
    php56w-odbc.x86_64       5.6.27-1.w6    @webtatic                               
    php56w-pdo.x86_64        5.6.27-1.w6    @webtatic                               
    php56w-soap.x86_64       5.6.27-1.w6    @webtatic                               
    php56w-xml.x86_64        5.6.27-1.w6    @webtatic                               
    php56w-xmlrpc.x86_64     5.6.27-1.w6    @webtatic
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    重启php-fpm:

    /usr/local/php/sbin/php-fpm restart
    
    • 1
    • 2

    然后执行:

    php -v
    
    • 1
    • 2

    应当显示 5.6.

    升级完毕。

    不过存在一个疑问:

    直接在服务器执行php -v的版本是5.6,但是在nginx服务器写一个info.php,内容如下:

    <?php
        phpinfo();
    ?>
    
    • 1
    • 2
    • 3
    • 4

    然后再浏览器访问:http://ip:port/info.php,显示的页面却还是旧的5.3版本。这个问题还没有搞清楚。

    对于上述疑问,追踪进展为:

    上面虽然删除安装了php的依赖包,但是旧的php版本本身没有删除,也就是说centos上存在两个版本的php,升级php依赖包后,执行 php -v 只不过系统访问的路径默认访问的是5.6版本的包,但是通过其他应用,比如nginx去访问的时候访问的还是旧的5.2版本的php。

    检查过程如下:
    执行php -v: 5.6

    查看系统所有版本的php:

    find / -name php
    
    • 1
    • 2

    显示结果中可以找到下面两个命令:

    /usr/local/php/bin/php
    /etc/bin/php
    
    • 1
    • 2
    • 3

    分别执行 /usr/local/php/bin/php -v 和 /etc/bin/php -v 可以看到,一个是5.2版本,一个是5.6版本,这就是为什么上面php -v 看到的是5.6版本,而phpinfo看到的是5.2版本的直接原因。
    根本原因:通过nginx访问php请求,nginx转发到127.0.0.1:9000,监听9000端口的php-fpm接收到请求后,将请求转交给对应的php解释器进行处理,也就是说使用的是哪个版本的php是由php-fpm决定,而php-fpm只是php的一个补丁,通过编译安装php时configure时加上参数 –enable-fpm 安装php-fpm,所以安装php时就已经决定了php-fpm调用的是哪一个版本的php,如果需要改变使用的php版本,只能重新下载更新版本的php源代码,然后重新编译安装带上–enable-fpm参数,这样才能成功改变phpinfo()显示的版本。

    重新安装php5.6的方法参考linux安装nginx和mysql和php.md。

    另外,想要找到系统采用的当前php.ini配置文件的话,可以通过下面的方式查找:

    find / -name php.ini
    
    • 1
    • 2

    这样可能会显示多个php.ini路径,然后执行如下命令可以获取当前被系统采用的php.ini配置文件:

    php -i | grep php.ini
  • 相关阅读:
    lodash kebabCase
    lodash escapeRegExp 转义正则特殊字符
    lodash capitalize 首字母大写
    lodash camelCase 驼峰写法
    lodash pick
    lodash random
    lodash round
    Linux 目录结构
    每天一个linux命令(6/18):lsof命令
    Linux 内核编译步骤及配置详解
  • 原文地址:https://www.cnblogs.com/enet01/p/8310957.html
Copyright © 2011-2022 走看看