我在这里真的很挣扎。我只是想通过php页面输出MongoDB集合的内容;而已。但是,阅读完多个教程后,我无法成功连接到MongoDB。
我了解到通过Composer连接到您的MongoDB是可行的选择。
所以我按照本教程安装Composer:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-16-04
1。
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
2。
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
3。
composer require mongodb/mongodb
根据this tutorial,我现在需要在我的php文件中输入require 'vendor/autoload.php';
。 “无此文件或目录。”好吧,所以我运行sudo find / -name autoload.php
并在autoload.php
中找到/root/vendor/autload.php
。所以我最终得到了以下php文件:
<?php
require '/root/vendor/autoload.php'; // Composer autoloader
use MongoDB\Driver\Manager as Mongo;
$mongo = new Mongo("mongodb://127.0.0.1:27017");
$collection = $mongo->blogDB->posts;
$result = $collection->find()->toArray();
print_r($result);
?>
但是在执行php文件时,出现以下错误:
Warning: require(/root/vendor/autoload.php): failed to open stream: Permission denied in /var/www/html/mySite/read.php on line 2
Fatal error: require(): Failed opening required '/root/vendor/autoload.php' (include_path='.:/usr/share/php') in /var/www/html/mySite/read.php on line 2
我尝试sudo chmod o+w /root/vendor/
无济于事。我可以简单地将autoload.php
安全地移动到新位置而不破坏Composer配置吗?我可以将它移到哪里?
我曾想过从头开始安装/重新安装Composer(这次是在管理员帐户中而不是上次在root帐户中),但是sudo apt-get purge --auto-remove composer
失败并显示错误Package 'composer' is not installed, so not removed
,我认为这是有道理的,因为我没有通过apt
安装它。
答案 0 :(得分:-1)
授予该路径权限:“ root / vendor / autoload.php”
授予权限777
并使用“ require_once”代替“ require”。
这是错误的,因为未获得对该文件夹的文件读取权限。
一旦授予权限,然后重试。希望代码能工作