PHP添加MongoDB扩展实例教程

 更新时间:2016年11月25日 15:28  点击:10466
由于要使用mikoomi mongodb plugin插件,所以需要php对mongodb的扩展支持,默认通过源安装的php并没有mongodb的扩展支持,具体可以通过php -m|grep mongo 验证 。这里就结合phpize提供的动态扩展功能进行mongodb的扩展。

一、php mongo模块的编译

先从 http://pecl.php.net/package/mongo 下载目前的stable稳定版 ,目前的最新稳定版本是1.5.2 , 安装步骤如下:

 代码如下 复制代码
# wget http://pecl.php.net/get/mongo-1.5.2.tgz
# tar zxvf mongo-1.5.2.tgz
# cd mongo-1.5.2
# /usr/bin/phpize
# ./configure –with-php-config=/usr/bin/php-config
# make && make install

注:没有 phpize 工具时 ,可以通过yum -y install php-devel 安装后就会有该工具 。

二、php的扩展配置

完成后在/etc/php.ini中添加如下内容:

 代码如下 复制代码
extension=mongo.so

完成后,再使用php -m查看,发现报错:

 代码如下 复制代码
# php -m|grep mongo
/usr/lib64/php/modules/mongo.so: undefined symbol: php_json_encode in Unknown on line 1

经网上查询发现是需要对 json.so 模块依赖,经查看/usr/lib64/php/modules/目录下已经存在json.so模块 。即然存在报错的原因是因为json.so在mongo.so之后才加载的  。在/etc/php.ini中查找了下json的配置,发现不存在。在/etc/php.d目录找到了json.ini文件 。

 代码如下 复制代码
# cat /etc/php.d/json.ini
; Enable json extension module
extension=json.so

知道了原因 ,也依葫芦画瓢 ,将刚刚在/etc/php.ini中的mongo配置删除 ,在/etc/php.d/目录下新增mongo.ini ,内容为extension=mongo.so ,配置完成后再使用php -m|grep mongo检测发现正常  。

注:这里网上也有一些方法是通过将/etc/php.d/json.ini文件删除,在/etc/php.ini文件中将json模块的配置加到mongo模块配置之前 。该方法虽然也可以,不过不推荐,因为我上面的方法自动会查看各模块之间的依赖关系 ,再决定加载的先后顺序 。如果遇到其他模块存在该情况时,同样可以自动解决掉。

PDO MySQL模块在安装php环境时默认是没有安装了,如果我们要使用PDO MySQL需要在php.ini配置文件中开启PDO MySQL模块功能即可,具体我来给大家介绍一下配置方法。

在windows服务器

找到php安装目录的php.ini文件然后我们搜索到
;extension=php_pdo.dll  这一行,看这行前面是否有分号,如果有的话,把它去掉。然后找找有没有  extension=php_pdo_mysql.dll   如果有,同样去掉前面的分号。如果没有,则手动添加上

最终这两行配置内容如下

extension=php_pdo.dll
extension=php_pdo_mysql.dll

最后重启apahce/iis就可以了

在centos服务器

先到http://pecl.php.net/找需要的版本,我用的是稳定的版本。要先看看说明,特别是要注意mysql的php的版本。

wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar xzvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
./configure --with-php-config=/usr/local/php/bin/php-config经过configure就可以make了

make
make install注意pdo_mysql的全路径,我的是:
/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so
然后在/usr/local/lib/php.ini
加上一句:

extension=/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so重新启动apache即可看到已经加载pdo_mysql成功。 (试验成功)

PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写。PEAR库更新很快,它是一个强大的代码仓库,每个PHP程序员都应该掌握的工具。

Windows下PHP PEAR安装:
(1)下载go-pear.phpar到PHP安装目录 
官方下载:http://pear.php.net/go-pear.phar
Windows下PHP PEAR安装步骤1
(2)PEAR安装流程
①执行php go-pear.phar 
Windows下PHP PEAR安装步骤2
请选择local,因为system可能没有写入权限,然后选择yes
②选择同意修改php.ini
Windows下PHP PEAR安装步骤3
③安装php扩展
Windows下PHP PEAR安装步骤4
④进入下载目录,引入php扩展即可使用。
Windows下PHP PEAR安装步骤5Linux下安装PEAR

①.下载pear包:
 wget http://pear.php.net/go-pear.phar
可能这个不是最新的,那就要根据提示下载更新的了。


②.执行:php go-pear.phar 

下面来给大家分析三种在家linux中给php添加扩展的方法,具体的不说多了我们直接看教程即可,希望例子对各位同学会带来帮助哦。

例子

(1).重新编译一遍PHP(这种方法要编译的东西比较多,因此比较费时),

(2).单独编译FTP扩展然后配置php支持该扩展(这种方式比较省时,因此选用这种方式进行)

(1).解压PHP源码

tar xvf php-5.3.5.tar.bz2

cd php-5.3.5

(2).进入ftp扩展目录编译

cd ext/ftp

(3).运行phpize,为PHP扩展编译做准备

$PREFIX/php/bin/phpize

(4).配置ftp扩展(php-config是获取PHP环境的命令)

./configure --with-php-config=$PREFIX=/php/bin/php-config

(5).编译和安装

make && make install

说明:安装好后会显示扩展安装到的目录,如

$PREFIX/php/lib/php/extensions/no-debug-zts-20090626/

(6).配置php.ini加入:

extension_dir=$PREFIX/lib/php/extensions/no-debug-zts-20090626

extension=ftp.so

(7).重启Apache服务器即可生效

service httpd restart

例子 hpize 命令是用来准备 PHP 外挂模块的编译环境的。下面例子中,外挂模块的源程序位于 extname 目录中:

$ cd extname

$ phpize

$ ./configure (注一)

$ make

$ make install

成功的安装将建立 extname.so 并放置于 PHP 的外挂模块目录中 (预设存放于 /usr/lib/php/modules/ 内) 。

需要调整 php.ini,加入 extension=extname.so 这一行之后才能使用此外挂模块。


编译添加扩展

编译PHP所需要的支持
yum install gcc
yum install libxml2-devel curl-devel libjpeg libjpeg-devel libpng-devel freetype-devel.x86_64 mysql-devel
yum install freetype-devel.x86_64  freetype.x86_64
yum install libjpeg libjpeg-devel

下载PHP:wget http://us1.php.net/distributions/php-5.3.28.tar.bz2

tar -jxf php-5.3.28.tar.bz2
cd php-5.3.28

./configure  –prefix=/usr/local/php-5.3.28  –enable-fpm  –with-mysql  –with-zlib  –with-config-file-path=/usr/local/php5.3.28/etc  –with-pdo-mysql   –with-libdir=lib64 –with-gd –with-jpeg-dir=/usr/lib –with-png-dir=/usr/lib –enable-mbstring –enable-gd-native-ttf –enable-xml  –with-freetype-dir –with-curl  –enable-ftp  –enable-zip –with-mcrypt  –enable-mbstring  –enable-json

 

出现失败

checking for alloca… (cached) yes
checking for 8-bit clean memcmp… yes
checking for stdarg.h… (cached) yes
checking for mcrypt support… yes
configure: error: mcrypt.h not found. Please reinstall libmcrypt

rpm -qa | grep libmcrypt
libmcrypt-2.5.7-5.el5
libmcrypt-2.5.8-4.el5.centos

有但是失败,上面的是用yum安装,不对,难道需要去下载包编译??试试呗:

wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz 安装:
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make
make install

Composer是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件,下面我们一起来看composer安装方法

下午在安装 Laravel 框架过程中,遇到了不少问题,因为 Laravel 的安装依赖于 composer,这里就先介绍一下 composer 的安装方法:

安装方法:

 代码如下 复制代码

#下载
sudo curl -sS https://getcomposer.org/installer | sudo php -d detect_unicode=Off

#更改文件权限
sudo chmod a+x composer.phar 

#移动文件
sudo chmod a+x composer.phar

#更新
sudo composer self-update这样就可以使用 composer 了。
[root@localhost www.111cn.net]# composer
Zend Guard Loader requires Zend Engine API version 220090626.
The Zend Engine API version 220121212 which is installed, is newer.
Contact Zend Technologies at http://www.zend.com/ for a later version of Zend Guard Loader.

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ / __ `__ / __ / __ / ___/ _ / ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
____/____/_/ /_/ /_/ .___/____/____/___/_/
                    /_/
Composer version aa9c257f0efd1a54c93ba95282821a497bc15d75 2014-03-09 15:09:15

Usage:
  [options] command [arguments]

Options:
  --help           -h Display this help message.

相关文章

  • PHP添加MongoDB扩展实例教程

    由于要使用mikoomi mongodb plugin插件,所以需要php对mongodb的扩展支持,默认通过源安装的php并没有mongodb的扩展支持,具体可以通过php -m|grep mongo 验证 。这里就结...2016-11-25
  • Linux下PHP安装curl扩展支持https例子

    安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
  • PHP扩展开发教程(总结)

    PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行。1、线...2015-11-08
  • PHP安装threads多线程扩展基础教程

    一、下载pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads二、判断PHP是ts还是nts版通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说...2015-11-24
  • PHP在引号前面添加反斜杠(PHP去除反斜杠)

    一般空间商提供的服务器空间默认PHP 指令 magic_quotes_gpc是on的,也就是打开的。这时候就可以用stripslashes() 函数删除自动添加的反斜杠。用法就是:比如包含字符串的变量是$str,那么就用stripslashes() 函数处理一下...2013-10-04
  • mongodb与mysql命令详细对比

    传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关...2013-09-11
  • 如何在.Net版本UEditor中添加一个普通按钮

    这篇文章主要介绍了如何在.Net版本UEditor中添加一个普通按钮,需要的朋友可以参考下...2021-09-22
  • 安装使用Mongoose配合Node.js操作MongoDB的基础教程

    这篇文章主要介绍了安装使用Mongoose来让Node.js操作MongoDB的基础教程,前端js+后端node+js操作MongoDB正是所谓最流行的一种JavaScript全栈开发方案,需要的朋友可以参考下...2016-03-03
  • php安装pcntl扩展实现多进程

    pcntl中的php必须要安装pcntl才可以实现多线程了,在网上找到许多的关于pcntl安装教程,下面整理了一篇比较完整的关于php pcntl安装与使用方法。 pcntl中php实现多进...2016-11-25
  • Navicat Premium连接mongodb详细教程

    这篇文章主要介绍了Navicat Premium连接mongodb详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05
  • MongoDB中4种日志的详细介绍

    这篇文章主要给大家介绍了关于MongoDB中4种日志的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-07-11
  • PS给绿色树林人物照片添加金色逆光效果

    PS给绿色树林人物照片添加金色逆光效果文章中,将会教大家如何添加逆光效果,想要学习该技能的同学请看下文介绍。 素材图片有点逆光,只是背景比较杂乱,效果不是很好...2016-12-15
  • Linux环境 php mcrypt扩展完全安装笔记

    mcrypt 是 php 里面重要的加密支持扩展库,Linux环境下默认是没开启的,在某些功能时,我们需要安装mcrypt扩展才能正常访问,本文就来讲讲如何完全安装这个模块。 如果你...2016-11-25
  • 美图秀秀怎么给照片添加电影字幕

    美图秀秀是一款不错的图片处理软件了,最近看到很多的朋友喜欢把自己的照片处理成电影字幕效果了,下面我们来看看美图秀秀怎么给照片添加电影字幕吧,希望文章对各位有帮助...2016-09-14
  • Swift中的限定扩展详析

    扩展就是向一个已有的类、结构体或枚举类型添加新功能。下面这篇文章主要给大家介绍了关于Swift中限定扩展的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。...2020-06-30
  • 浅谈Vue开发人员的7个最好的VSCode扩展

    这篇文章主要介绍了浅谈Vue开发人员的7个最好的VSCode扩展,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • 详解mongodb搭建Replica Set的方法

    这篇文章主要介绍了mongodb搭建Replica Set的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-12-24
  • opcache PHP新的字节码缓存扩展详解

    OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。PHP 5.5.0 及后续版...2016-11-25
  • 给网站添加优质内容的25种方式

      我们早已知道,网站的质量在Google中起关键作用。高级Google工程师Matt Cutts在他的blog中多次提到,“优质”对于Google至关重要,无论是内容还是连接。   不...2016-09-20
  • spring data 连接mongodb的两种方式

    这篇文章主要介绍了spring data mongodb连接方式详解,本文给大家分享两种连接方式,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-08-27