linuxmongodbphp扩展
1. php 怎么进入mongodb
在linux、window、Mac平台上安装MongoDB扩展
Linux上安装 MongoDB PHP扩展
在终端上安装
可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动
$ sudo pecl install mongo
使用php的pecl安装命令必须保证网络连接可用以及root权限。
安装手册
如果想通过源码来编译扩展驱动。必须手动编译源码包,这样做的好是最新修正的bug包含在源码包中。
可以在Github上下载MongoDB PHP驱动包。访问github网站然后搜索"mongo php driver"(下载地址:https://github.com/mongodb/mongo-php-driver),下载该源码包,然后执行以下命令:
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ phpize
$ ./configure
$ sudo make install
如果php是编译的,则安装方法如下(假设是编译在/usr/local/php目录中):
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ sudo make install
执行以上命令后,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:
extension=mongo.so
注意:你需要指明 extension_dir 配置项的路径。
window上安装 MongoDB PHP扩展
Github上已经提供了用于window平台的预编译php mongodb驱动二进制包(下载地址:https://s3.amazonaws.com/drivers.mongodb.org/php/index.html),可以下载与php对应的版本,但是需要注意以下几点问题:
VC6 是运行于 Apache 服务器
'Thread safe'(线程安全)是运行在Apache上以模块的PHP上,如果以CGI的模式运行PHP,请选择非线程安全模式(' non-thread safe')。
VC9是运行于 IIS 服务器上。
下载完需要的二进制包后,解压压缩包,将'php_mongo.dll'文件添加到PHP扩展目录中(ext)。ext目录通常在PHP安装目录下的ext目录。
打开php配置文件 php.ini 添加以下配置:
extension=php_mongo.dll
重启服务器。
通过浏览器访问phpinfo,如果安装成功,就会看到类型以下的信息:
MAC中安装MongoDB PHP扩展驱动
你可以使用'autoconf'安装MongoDB PHP扩展驱动。
你可以使用'Xcode'安装MongoDB PHP扩展驱动。
如果使用 XAMPP,可以使用以下命令安装MongoDB PHP扩展驱动:
sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongo
如果以上命令在XMPP或者MAMP中不起作用,需要在Github上下载兼容的预编译包。
然后添加 'extension=mongo.so'配置到php.ini文件中。
2. 如何编译安装PHP扩展
一开始安装PHP的时候,我们并不知道需要哪些扩展,所以只有等到我们真正用到的时候才想办法去安装。
安装PHP扩展最简单的办法就是
sudo apt-get install php5-xxx
但有的时候并非我们所愿,源里面并没有我们需要的扩展,这时候就需要我们下载源码自己编译安装了。
这篇文章中我将介绍在本地Linux平台下编译安装PHP扩展的方法。
现在网站根目录下创建 index.php 打印基本的配置信息,以验证我们是否安装成功。
配置编译环境
我们需要安装一些编译必须的库,还有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev
Fedora
sudo yum install php-devel php-mysqlnd gcc libtool
RHEL
sudo yum install php-devel php-mysql gcc libtool
Suse
yast2 -i php5-pear php5-devel php5-mysql gcc
安装扩展
PHP有两种可供安装的扩展:一种是PHP原生的但是默认没有安装的,另一种的第三方开发的扩展。
下面依次介绍两种扩展的安装方法:
安装之前我们需要一份和当前机器上相同版本的PHP源码
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9
前往此处 下载相应的源码包。
在 /ext 目录下面可以看到所有PHP原生的扩展。
安装原生扩展
以 PHP-intl 为例,这是PHP国际化的扩展。
为了安装这个扩展我们需要先安装ICU 库
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg
ICU 安装成功之后进入/ext/intl 目录:
cd intl
phpize
./configure --enable-intl
make
sudo make install
下面解释一下上面的每个命令:
phpize : 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
./configure --enable-intl: 配置编译环境,相当于告诉编译器编译PHP源码的时候加上intl这个扩展。
make: 将会把源码编译成 intl.so
make install : 将会把 intl.so 移动到当前安装的 PHP 的扩展目录。
接下来我们要做的就是在php.ini中启用这个扩展,这一步将会在最后给出示例。
安装第三方扩展
将以这个 扩展为例,这个扩展主要实现了PHP识别条形码的功能。
先安装必要的依赖
sudo apt-get install pkg-config
git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install
将会生成一个文件,将其拷贝到PHP的扩展目录下面。
启用扩展
在php.ini中启用扩展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,这是最简单直接的方法。
也可以单独建一个ini文件,然后在php.ini中包含这些文件就可以了。
下面介绍一下第二种方法:
cd `/etc/php5/mods-available`
这个目录里可以放新建的ini文件,然后执行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini
上面的命令将会创建ini文件,并且写如相应的配置信息。
然后执行下面的命令启用扩展即可(需要安装 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl
如果未安装 php5enmod 工具,则需要手动配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini
最后在执行一下重启操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart
3. 怎么在apache 装mongodb扩展
首先要更正一点,不运唯竖是Apache的mongodb扩展,而是PHP的mogodb扩展,下面以Linux系统为例:
1、PHPMongoDB下载地址:wget http://pecl.php.net/get/mongo-1.6.10.tgz
[root@mongodb ~]# wget http://pecl.php.net/get/mongo-1.6.10.tgz
2、解压安装并旁大进入mongo-1.6.10目录
[root@mongodb ~]# tar -zxvf mongo-1.6.10.tgz
[root@mongodb ~]# cd mongo-1.6.10
3、在mongo-1.6.10目录山戚下,生成configure配置文件
[root@mongodb mongo-1.6.10]# phpize
Configuring for:
PHP Api Version:20090626
Zend Mole Api No:20090626
Zend Extension Api No:220090626
[root@mongodb mongo-1.6.10]# ./configure –with-php-config=/usr/local/php/bin/php-config
[root@mongodb mongo-1.6.10]# make
注意:一定要用root用户。
[root@mongodb mongo-1.6.10]# make install
4、在PHP配置文件php.ini里面加载mongo.so扩展
extension=mongo.so
4. linux下phpstudy怎么安装php环境变量
linux下phpstudy环境的安装
phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6
phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd,
支持php5.2/5.3/5.4/5.5切换
已经在centos-6.5,debian-7.4.,ubuntu-13.10测试成功。
下载版:http//lamp.phpstudy.net/phpstudy.bin
完整版:http//lamp.phpstudy.net/phpstudy-all.bin
安装:
wget -c http//lamp.phpstudy.net/phpstudy.bin
chmod +x phpstudy.bin #权限设置
./phpstudy.bin #运行安装
用时十到几十分钟不等,安装时间取决于电脑的下载速度和配置。
也可以事先下载好完整,安装时无需下载。
安装完成
如何切换php版:
假如你先安装的apache+php5.3
想切换成nginx+php5.4
你就再走一次./phpstudy.bin
但是你会发现有一行是否安装mysql提示选不安装
这样只需要编译nginx+php5.4
从而节省时间,这样只需要几分钟即可。
项目地址:http://lamp.phpstudy.net/
使用说明:
服务进程管理:phpstudy (start|stop|restart|uninstall)
站点主机管理:phpstudy (add|del|list)
ftpd用户管理:phpstudy ftp (add|del|list)
=phpstudy WIN版下载==================
‘软件简介’
该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有35M,有专门的控制面板。总之学习PHP只需一个包。
对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。
1、全面适合 Win2000/XP/2003/win7/win8/win2008 操作系统 ,支持Apache、IIS、Nginx和LightTPD。
2、该程序包集成以下软件,括号内为phpstudy下对应的目录。
php 5.6a3 (php56n)
php 5.5.10 (php55)
php 5.5.10-nts (php55n)
php 5.4.26 (php54)
php 5.4.26-nts (php54n)
php 5.3.28 (php53)
php 5.3.28-nts (php53n)
php 5.2.17 (php52)
Apache 2.4.7 (Apache)
Nginx 1.5.11 (nginx)
LightTPD 1.4.32 (Lighttpd)
MySQL 5.5.36 (MySQL)
MySQL-Front 5.3 (SQL-Front)
phpMyAdmin 3.5.8.2 (phpMyAdmin)
pear 1.9.4 (pear)
OpenSSL 1.0.1e&0.9.8y
ZendOptimizer 3.3.3 (php5.2有)
Zend Loader 5.5.0 (php5.3有)
Zend Loader 6.0.0 (php5.4有)
wincache 1.3.5 (fastcgi有)
php_opcache 7.0.3 (ZendOpcache扩展)
xdebug 2.2.3.1
Zend Debugger 6.2 (php5.3/4 fastcgi有)
xcache 3.1.0
eAccelerator 1.0&0.9.6
php_sqlsrv (MSSQL扩展)
php_pdo_sqlsrv (PDO-MSSQL扩展)
php_mongo 1.4.5 (MongoDB扩展)
php_dbase 5.1.0 (dbase扩展)
php_dbx 1.1.2 (dbx扩展)
php_ibm_db2 1.9.5 (ibm_db2扩展)
php_apc 3.1.13 (php_apc扩展)
php_memcache 3.0.8
phpStudy Ftp server (FTPServ)
SendMail 3.2 (sendmail)
VC++ 2008 运行库
3、MySQL数据库默认用户名:root,密码root,安装后请重新设置密码。
4、本程序纯绿色,支持22种组合一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效直观地进行控制程序的启停。
5、自带FTP服务器,支持多用户,无需再安装FTP服务器。自带网站挂马监视器,随时记录文件的修改情况,让挂马文件无处可逃。
6、本程序完美支持II7,IIS8和IIS6。应网友的要求制作Nginx版和Lighttpd版。Nginx版为phpfind,Lighttpd版为phpLight。
推荐:学习JSP用JspStudy。
‘软件简介’
JspStudy集成JDK+tomcat+Apache+mysql,JSP环境配置一键启动。无需修改任何配置即可迅速搭建支持JSP的服务器运行环境。
纯绿色解压即可,支持系统服务和非服务两种启动方式,自由切换。控制面板更加有效直观地进行控制程序的启停。
JspStudy将复杂的JSP环境配置简单化。
‘特别注意’
1. 为了减少出错安装路径不得有汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。
2. 此为apache+php方案,需要Nginx+php方案的请到www.phpStudy.net下载phpfind,Lighttpd+PHP方案下载phpLight。
3. 重装系统后或相关服务丢失时,只需要点一下‘运行模式-应用’即可。
4. 可通过菜单‘卸载相关服务’进行卸载相关服务。
5. 在‘启动’、‘停止’、‘重启’三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。
6. 菜单‘phpStudy 设置’可以进行php,apche,mysql的相关设置。菜单‘站点域名设置’可以进行站点及域名的添加。
7. 本程序分为安装版和非安装版,无论是安装还是免安装,最后的效果完全一致。
8. 端口问题无法启动时,请使用菜单‘环境端口检测’进行端口检测,尝试启动。
26种组合一键切换apache+php
php扩展管理超级方便
nginx+php
IIS7/8/6+php
mysql备份还原导入导出
站点域名设置
端口检测
博客不再更新,请到官方网站下载:http://www.phpstudy.net/
下载地址解压版:http://www.phpstudy.net/phpstudy/phpStudy.zip
下载地址安装版:http://www.phpstudy.net/phpstudy/phpStudy-install.zip
其他版本:
软件简单说明各版本的区别大小下载
phpStudy26种组合,超全大合集Apache+Nginx+LightTPD+IIS
php5.2 php5.3 php5.4 php5.5 php5.6
MySQL phpMyAdmin MySQL-Front
26种组合自由切换,是下面5个版本的合集
同时支持apache/nginx/Lighttpd和IIS7/8/636M解压版
安装版
phpStudy
Lite
新手用,经典wamp组合Apache+php5.3+php5.4+MySQL (wamp集成包)
没有上面合集复杂的多版本设置,简单适合新手。16M解压版
phpStudy
for IIS
IIS服务器专用IIS+php5.2+php5.3+php 5.4+MySQL
php一键安装包 for IIS7/8/6 (IIS服务器专用)21M解压版
phpStudy
for Linux
Linux服务器专用(lamp)Apache+Nginx+LightTPD+MySQL
php5.2+php5.3+php5.4+php5.5一键安装包
支持centos,ubuntu,debian等Linux系统,12种组合80M安装版
phpfindnginx+php组合(wnmp)Nginx+php5.3+php5.4+MySQL (wnmp集成包)
nginx+php组合,适合喜欢用nginx的朋友16M解压版
phpLightlighttpd+php组合(wlmp)Lighttpd+php5.3+php5.5+MySQL (wlmp集成包)17M解压版
phpStudy
(php5.2)
apache+php5.2珍藏版Apache2.2+php5.2.17+MySQL5.1
php5.2经典组合值得收藏,仅有11M,无需运行库11M解压版
JspStudyJSP环境一键安装包JDK+tomcat+Apache+mysql+php
纯绿色解压即可,不添加环境变量,不修改注册表52M解压版
下载地址:
php5.3+php5.4合集下载: http//www.phpstudy.net/phpstudy/phpStudy.zip
5. php7.3.4连接MongoDB2.2.2用哪个版本的扩展呢
首先进入pecl(PHP Extension Community Library)网站;
搜索mongodb扩展;
点击版本,查看支持的php版本
6. linux下我mongodb存储快要满了,怎么扩充存储大小,且不删除原来的数据
如果是你的硬盘满了,你可以再用别的硬盘跟这个硬盘构成RAID。
如果是你的一个BSON doc快满了,那么说明你的存储的数据结构是有问题的,如果可能的话,应该重新设计以使BSON doc不超过限制;如果不能的话,那么你可以修改
源文件“mongo/src/mongo/bson/util/builder.h”里面的
constintBSONObjMaxUserSize=16*1024*1024;
到你需要的大小,然后重新编译mongodb。但不要改的太大,因为每一个BSON Object都是要全部读进内存里的。
7. php7 mongodb 扩展 真的很差吗
MongoDB\Driver\Manager::executeBulkWrite
这玩意还配置了一个巨大的类库来配合调用:就是这个:https://github.com/mongodb/mongo-php-library ,纯粹是脱裤子放P,多此一举,本来原生扩展就已经巨长、巨难用,还配一个根本没有简化任何代码的库有什么意义?甚至于调用这个类库比原生的名字更长、更啰嗦,而且多了一层封装就多一次bug机会。
这个库文件总共63个,看看,如果你随便写个脚本访问一下mongodb,还得包含63个文件,我TM整个项目都没有63个文件好不好?这些个写惯了java的没事就老老实实写java,都跑来写php,php是要解析执行的,又不像jvm那么编译优化执行,搞那么多文件,不影响执行速度吗?真是狗屎,所以完全不推荐用这个狗屎库。
但是这个扩展最奇怪的就是文档超级简陋,根本不能获得任何有价值的信息,所以只能靠摸索来了。
下面是我用到的由MongoClient迁移到MongoDB\Driver的差异点。
MongoClient插入或更新是同样的代码:
(new MongoClient())->{$db}->{$collection}->save($arr);
// 这个$arr数组可以直接含有 "_id" 索引来指定 mongodb文档的_id值,就这么简单粗暴,这才是php啊!
MongoDB\Driver,插入和更新需要区分:
$mongo = new MongoDB\Driver\Manager();
$bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
$data = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query([]), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED))->toArray();
if (empty($data[0])) { // 确定不存在,插入
$bulk->insert($arr);
} else { // 否者更新
$bulk->update([], array('$set' => $arr)); // $arr同样是刚才的数组
}
// 还没完,还要执行下一步:db.collection要替换成实际的数据库、集合名
$result = $mongo->executeBulkWrite('db.collection', $bulk, new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000));
// 返回插入或更新是否成功:
$ok = $result->getInsertedCount() || $result->getModifiedCount() ? 1 : 0;
// 真是够了!
查询一条记录:
MongoClient:
(new MongoClient())->{$db}->{$collection}->findOne(['_id' => $id]);
MongoDB\Driver:
$mongo = new MongoDB\Driver\Manager();
$result = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query(['_id'=>$id], []), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));
// 返回的$result是一个对象,需要手动转换成数组。
查询数量时候,需要注意:
$mongo = new MongoDB\Driver\Manager();
$cursor = $mongo-executeCommand($db, new MongoDB\Driver\Command($arr), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));
// 这里$cursor是一个游标。需要注意$arr里的字段:
$arr = ['count'=>$collection, 'query'=>$query]; // 这里count必须排在前面,位置反了直接报异常。
查询结果集:
$mongo = new MongoDB\Driver\Manager();
$cursor = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query($arr, $opts), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));
//注意,这里的 $arr和 $opts;
$arr = ['_id'=> ['$in'=> $ids] ]; // 根据id数组获取集合
$opts = ['limit'=> $limit, 'skip'=> $skip ]; // 不推荐
// 这里在传递$limit和$skip的时候,最好先转成整数,不然不生效:
$opts = ['limit'=> (int) $limit, 'skip'=> (int) $skip ]; // 推荐写法。
// 写到这里,让人怀疑是不是在用php了,怎么还需要这样的类型转换。字符串整数都不行!
基本就这样,推荐自己封装一个简单的MongoDB\Driver,而不是使用那个巨大无比的库、也不推荐直接用原生
8. 如何为PHP安装mongodb的扩展
1.首先下载php的mongodb扩展
从http://pecl.php.net/package/mongo这个网址下载mongodb的扩展源码包
1
wget http://pecl.php.net/get/mongo-1.4.5.tgz
2.解压安装包
1
tar zxf mongo-1.4.5.tgz
3.进入解压目录,运行phpize进行安装准备
1
2
cd mongo-1.4.5
/usr/local/php/bin/phpize
4.安装编译
上述命令运行完后,在目录下就生成了configure文件
使用./configure命令进行安装配置,然后使用make && make install进行编译安装,命令如下:
1
2
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
5.编辑php.ini增加下述一行添加mongodb扩展
1
extension=mongo.so
重启web容器,然后查看phpinfo,看到mongodb的内容就说明安装成功。
9. 如何解决MongoDB的PHP扩展不支持64位整数的问题
sybase_connect连喊段迟上数据库。
语法: int sybase_connect(string [servername], string [username], string [password]);
返回值: 整数函数种类: 数据库功能 本函数用来打开与 Sybase 数据库的连接。
参数 servername 为欲连上的数据库服务器名称。
参数 username 及 password 可省略,分别为连接使用的帐号及密码。
使用本函数需注意早燃闭点关闭数据库,以减少系统的负担。
连接成功则返回数据库的连接代号,郑李失败返回 false 值。