我在本地电脑上安装 MongoDB ,请参阅以下网站
http://linuxforever.info/2017/04/13/how-to-install-mongodb-3-4-in-linux-mint-18-ubuntu-16-04/
我做了一个MongoDB的简单演示,当我运行项目时,我得到了一个像
这样的错误致命错误:调用未定义的方法 的MongoDB \驱动\ WriteConcern :: ISDEFAULT()
我已经检查了两侧的MongoDB版本(phpinfo.php和终端),它们有所不同。
终端=> private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start(e.Uri.AbsoluteUri);
e.Handled = true;
}
private void component_ComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
string selectedComponent = box_ComboBox.SelectedItem.ToString();
LinkToQuery.Text = string.Format("Selected: {0} ", box_ComboBox.SelectedItem.ToString());
URLQuery.NavigateUri = new System.Uri(LinkQuery[selectedComponent],System.UriKind.Absolute);
}
命令
pecl search mongo
Phpinfo =>
Matched packages, channel pecl.php.net:
Package Stable/(Latest) Local
mongo 1.6.16 (stable) MongoDB database driver
mongodb 1.4.3 (stable) 1.4.3 MongoDB driver for PHP
请帮我解决这个问题。
提前致谢
答案 0 :(得分:0)
尝试使用以下命令进行安装:
pecl install mongodb
在末尾为php.ini文件添加扩展
extension = mongodb.so
重新安装你的php和apache服务器
使用composer加载mongo db软件包
composer require mongodb/mongodb
在上述过程
之后运行以下代码 <?php
require 'vendor/autoload.php';
// Creating Connection
$con = new MongoDB\Client("mongodb://localhost:27017");
// Creating Database
$db = $con->yourdbname;
// Creating Document
$collection = $db->employee;
// Insering Record
$collection->insertOne( [ 'name' =>'Peter', 'email' =>'peter@abc.com' ] );
// Fetching Record
$record = $collection->find( [ 'name' =>'Peter'] );
foreach ($record as $employe) {
echo $employe['name'], ': ', $employe['email']."<br>";
}
答案 1 :(得分:0)
MongoDB\Driver\WriteConcern::isDefault()
您共享MongoDB extension version 1.2.9
的输出时已phpinfo()
。
您需要更新扩展程序。
<强>更新强>
您可以从以下链接下载最新的扩展程序
https://pecl.php.net/package/mongodb
Linux Mint 是基于Debian的,您可以在其上安装以下软件包进行升级 https://ubuntu.pkgs.org/18.04/ubuntu-universe-amd64/php-mongodb_1.3.4-1build1_amd64.deb.html
答案 2 :(得分:0)
<?php
require_once './vendor/autoload.php';
$con = new MongoDB\Client("mongodb://localhost:27017");
// Creating Database
$db = $con->yourdbname;
// Creating Document
$collection = $db->employee;
// Insering Record
$collection->insertOne( [ 'name' =>'Peter', 'email' =>'peter@abc.com'] );
// Fetching Record
$record = $collection->find( [ 'name' =>'Peter'] );
foreach ($record as $employe) {
echo $employe['name'], ': ', $employe['email']."<br>";
}
?>
答案 3 :(得分:0)
答案 4 :(得分:0)
我有一个类似的问题,几个小时后我解决了。希望这可以节省其他人的时间。我在macOS Sierra上。
我运行了sudo pecl install mongodb
以更新mongo驱动程序。我不需要将扩展名添加到php.ini中,因为它是旧版本中的扩展名。
PHP拒绝识别更新的mongo驱动程序。我还会收到致命错误:尝试执行查询时,调用undefined ... isDefault()错误。
找到 new mongodb驱动程序扩展的完整路径。
有几种方法可以做到这一点。
更新驱动程序(即sudo pecl install mongodb
)将输出以下内容:
安装 '/usr/local/Cellar/php71/7.1.2_13/lib/php/extensions/no-debug-non-zts-20160303/mongodb.so'
或者,您也可以搜索它:在Mac或Linux上为find / -name "mongodb.so"
。
找到您的php.ini文件。
同样,有几种不同的方法。
在php中回显phpinfo()会告诉您它在哪里。
或者,您可以运行find / -name php.ini
。
我的位于/usr/local/etc/php/7.1/php.ini
编辑您的php.ini文件,然后替换
extension =“ mongodb.so”
以及新扩展名的路径:
extension =“ / usr / local / Cellar / php71 / 7.1.2_13 / lib / php / extensions / no-debug-non-zts-20160303 / mongodb.so”
保存并重试查询。
就我而言,php.ini实际上包含/usr/local/etc/php/7.1/conf.d/ext-mongodb.ini中的mongo扩展名,因此这是我编辑的文件。但是,我成功地测试了这两种解决方案。