• Ubuntu 下升级 php


    起因:

    在现有的 Apache + PHP 环境下,增加一个 PHP Extension 扩展时,遇到错误:

    Unable to initialize module
    Module compiled with module API=20090626
    PHP    compiled with module API=20100525
    These options need to match

    这是因为 PHP 运行库的编译环境与扩展包的编译环境不一致。

    解决的思路很简单,让两者一致。这里就有两种处理方式:1,改变 PHP 运行库版本;2,改变扩展包编译环境版本。

    在我的服务器上,Apache 加载的版本比 ubuntu apt-get 下来的版本新,所以选择更新系统的 Extension 编译版本。

    1. 清除旧版本

    # Remove Ubuntu PHP Packages
    sudo apt-get remove php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-geoip php5-imagick php5-intl php5-mcrypt php5-mysql php5-xdebug php5-xsl
     
    # Remove PECL Packages
    sudo pecl uninstall apc
    sudo pecl uninstall geoip
    sudo pecl uninstall xdebug
     

     

    2. 获取 PHP 指定版本,下载地址可以在这个页面找到:http://cn2.php.net/releases/

    # Get PHP 5.4.17 Source
    wget http://museum.php.net/php5/php-5.4.17.tar.bz2
    tar jxf php-5.4.17.tar.bz2
    cd php-5.4.17/
     
    3. 编译
    # Configure PHP Source
    # Note: Use `php-config` utility to determine your existing PHP configure options.
    ./configure
    # Install PHP
    make
    make test
    sudo make install
    4. 使用 peci
    sudo pecl install ssh2 channel://pecl.php.net/ssh2-0.12
     
    5. 在 php.ini 中加入
    add the "extension=ssh2.so" to the extension part of php.ini
     
    6. 重启 apache
     
     
    注1:有可能服务器上不存在 php.ini,如果这样,需要在相关目录上创建一个。
    如,使用 <? phpinfo(); ?> 输出:
    Configuration File (php.ini) Path /bitnami/megastack-linux-x64/output/php/lib
    Loaded Configuration File (none)
    这是在我服务器上的输出,让人郁闷的是,这个目录还是不存在的。刚开始没意识到不存在 php.ini,好一通找啊,浪费了不少时间。最后,直接创建了这个目录,再 
    sudo echo "extension=ssh2.so" > php.ini
    其它的配置,就全都用默认值了。
     
    注2:这里的 Apache 服务器和 PHP 模块都不是用 ubuntu 的 apt-get 安装的,是独立存在的。所以上面下载的 PHP 最新源码,并没有加入到这个 Apache 服务器中,只是作为编译 ssh2 php extension 的环境用。
    所以在编译时,configure 时,没有指定参数,全都采用默认设置。
     
    参考:
    https://gist.github.com/ziadoz/3130816
    http://stackoverflow.com/questions/19561722/pecl-installs-for-previous-php-version
    http://www.php.net/manual/en/ssh2.installation.php
  • 相关阅读:
    python基础-正则2
    python基础-正则1
    python基础-私有变量和方法
    「SCOI2015」小凸玩密室 解题报告
    「JLOI2015」骗我呢 解题报告?
    「JLOI2015」城池攻占 解题报告
    【模板】左偏树(可并堆)
    网络流24题 餐巾计划问题 解题报告
    「JLOI2015」管道连接 解题报告
    [WC2008]游览计划 解题报告
  • 原文地址:https://www.cnblogs.com/brady-wang/p/5420953.html
Copyright © 2020-2023  润新知