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 值。