起因:

在现有的 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

Ubuntu 下升级 php的更多相关文章

  1. ubuntu下升级R版本

    ubuntu下升级R版本   在测试<机器学习 实用案例解析>一书的邮件分类代码时,windows系统下rstudio中无法读取特殊字符,在ubuntu下可以.在ubuntu虚拟机下安装t ...

  2. ubuntu下升级网卡驱动

    ubuntu下升级网卡驱动 无线局域网环境下,有个笔记本儿的无线经常断,而其它的终端都好好的,唯独它不行.所以想到检查和更新下无线网卡的驱动看看.以下是操作流程,记录一下. 阅读说明:##为标签, / ...

  3. Ubuntu下升级Git以及获取ssh keys的代码

    今天开始用的git,记下获取ssh keys 的代码 ? 1 2 3 ssh-keygen -t rsa -C "your_email@example.com" # Enter f ...

  4. ubuntu下升级特定软件与查看软件版本信息

    ubuntu 升级软件: sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 ubu ...

  5. 记录:Ubuntu下升级Python从2.x到3.x

    一.安装Python3 在Ubuntu中的终端输入:sudo apt-get install python3 提示资源被锁住,可能有另外一个程序在占用此资源. 解决方法:输入以下指令解锁资源 sudo ...

  6. Ubuntu 下升级git到最新版

    $ sudo add-apt-repository ppa:git-core/ppa $ sudo apt-get update $ sudo apt-get install git

  7. ubuntu下nodejs和npm的安装及升级

    ubuntu 下 nodejs 和 npm 的安装及升级 参考:https://segmentfault.com/a/1190000007542620 一:ubuntu下安装 node 和 npm命令 ...

  8. ubuntu下卸载python2和升级python3.5

    卸载python只需一条语句就可以实现 sudu apt-get remove python ubuntu下安装python3 sudo apt-get install python3 但这样只安装了 ...

  9. 解决将/etc/passwd文件中1000改为0后只能guest进入系统的问题 ||ubuntu下将普通用户权限升级为root用户权限的方法;

    其实我现在才知道linux系统对于用户权限管理比较严,在ubuntu下系统不允许root权限的用户进入图像界面系统.由于之前没弄过权限这个东西瞬间掉坑了了. 我是想修改一下root下的nginx.co ...

随机推荐

  1. 使用nohup或者tmux将程序挂在后台

    程序挂在后台 nohup nohup 命令 & 这样的命令会将屏幕的输出重定向到同目录的nohup.out中,可以使用 > 来重定向输出. nohup 命令 > .log & ...

  2. [Golang学习笔记] 09 字典

    字典(Map):map[K]T K:为键类型,T:为元素(值)类型.例:map[int] string 一个键类型为int,值类型为string的字典类型 Go语言的字典类型(map)实际上是一个哈希 ...

  3. 20155207实验2 Windows口令破解

    20155207实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...

  4. 2016-2017-2 《Java程序设计》第1周学习问题汇总

    201552-53 <Java程序设计>第一周问题汇总 关于软件安装以及配置中出现的问题,附上教程及讨论组网址: JDK/intelljIDEA安装及配置: http://www.cnbl ...

  5. # 20155224 实验三 敏捷开发与XP实践 实验报告

    20155224 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  6. 20155313 2016-2017-2 《Java程序设计》第九周学习总结

    20155313 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  7. 20155333 2016-2017-2 《Java程序设计》第三周学习总结

    20155333 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章 类定义时使用class关键词,名称使用Clothes,建立实例要使用new关键词. ...

  8. 如何注册Uber司机(全国版最新最详细注册流程)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://didi-uber.com/archiv ...

  9. L016-linux系统文件权限体系实战深入讲解小节

    L016-linux系统文件权限体系实战深入讲解小节 不知道今天能不能写完哈,能写完发出来就是这周发两次小结了,有进步哦,不过L015和L016两节课内容也确实不多,进入正题 上一课学到了chmod. ...

  10. Scrapy爬豆瓣电影Top250并存入MySQL数据库

    d:进入D盘 scrapy startproject douban创建豆瓣项目 cd douban进入项目 scrapy genspider douban_spider movie.douban.co ...