Mat*_*Asp 4 php linux apache debian mongodb
在Debian Jessie上,Apache2 --version"0.91-ubuntu1",PHP 5.6.30.
在搜索主题时,我尝试了许多已经回答的问题.
1)我为MongoDB PHP驱动程序进行了手动安装 http://php.net/manual/en/mongodb.installation.manual.php
2)要检查它是否有效,我创建了一个文件testMongo.php并添加
<?php phpinfo(); ?>
3)在浏览器中运行testMongo.php,可以找到该配置文件.
/etc/php5/apache2/php.ini
4)可以使用该命令找到我的mongo.so文件
php -i | grep extension_dir
5)输出是:
extension_dir =>/usr/lib/php5/20131226 =>/usr/lib/php5/20131226
6)在这个文件中,我在"动态扩展"之后添加了
延长=/usr/lib中/ PHP5/20131226/mongo.so
7)然后我去了Composer并完成了命令行安装
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Run Code Online (Sandbox Code Playgroud)
8)安装Composer后,我试过:
php composer.phar require mongodb/mongodb
Run Code Online (Sandbox Code Playgroud)
但是,这会产生以下消息:
Problem 1
- mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
- mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
- mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
- Installation request for mongodb/mongodb ^1.2 -> satisfiable by mongodb/mongodb[1.2.0].
Run Code Online (Sandbox Code Playgroud)
一些研究员在帖子中提到我可以使用--ignore-platform-reqs它有效!
当我跑:
#php5 index.php$ client = new MongoDB\Client(<连接到mongo-atlas>)//使用python
我收到以下错误:
PHP Fatal error: Class 'MongoDB\Driver\Manager'
not found in /var/www/vendor/mongodb/mongodb/src/Client.php on line 83
Run Code Online (Sandbox Code Playgroud)
跑步
pecl upgrade mongodb
Run Code Online (Sandbox Code Playgroud)
如果它抱怨 phpize,请运行
sudo apt install php7.x-dev
Run Code Online (Sandbox Code Playgroud)
将 7.x 替换为您的 PHP 版本。例如-
sudo apt install php7.3-dev
Run Code Online (Sandbox Code Playgroud)
Composer在那里给你正确的答案,你使用的是错误的库.不要使用--ignore-platform-reqs,或者你可以强制安装它.你现在需要做的是检查哪个库适合你的php版本.写
php --version
如果你不知道你正在使用哪一个.输出应该是这样的:
PHP 5.6.30-0+deb8u1 (cli) (built: Feb 8 2017 09:49:20)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
Run Code Online (Sandbox Code Playgroud)
在下面的列表中找到您的版本.
请参阅mongodb中的描述:mongodb的PHP-Driver
转到pecl并下载适合您的php版本号的任何版本.
在你的情况下(PHP5.6):
$ wget https://pecl.php.net/get/mongodb-1.2.11.tgz
$ tar -xvzf mongodb-1.2.11.tgz
$ cd mongodb-1.2.11/
$ phpize
$ ./configure
$ make all -j 5
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
现在它应该工作.
您可以使用此代码测试php mongodb连接(查找ObjectId):
<?php
# filename ConnectMongo.php
require_once __DIR__ . "/vendor/autoload.php";
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// connect to mongodb
$manager = new MongoDB\Driver\Manager('mongodb://username:password@host');
$id = new \MongoDB\BSON\ObjectId("5a0c8e2362eb6404c2f10032");
$filter = ['_id' => $id];
$options = [];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $manager->executeQuery('db.collection', $query);
foreach ($rows as $document) {
var_dump($document);
}
?>
Run Code Online (Sandbox Code Playgroud)
在终端写这个来测试连接:
$ php ConnectMongo.php
确保您还使用composer进行安装,不应再出现相同的错误.
| 归档时间: |
|
| 查看次数: |
11794 次 |
| 最近记录: |