php docs在`require'/root/vendor/autload.php'`

时间:2019-04-09 06:53:20

标签: php composer-php

我在这里真的很挣扎。我只是想通过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安装它。

1 个答案:

答案 0 :(得分:-1)

授予该路径权限:“ root / vendor / autoload.php”

授予权限777

并使用“ require_once”代替“ require”。

这是错误的,因为未获得对该文件夹的文件读取权限。

一旦授予权限,然后重试。希望代码能工作