php docs在`require'/ root / vendor / autoload.php'`上返回“permission denied”

问题描述 投票:0回答:1

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

php composer-php
1个回答
-1
投票

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

给予许可777

并使用“require_once”而不是“require”。

这是错误,因为未授予对此文件夹的文件读取权限。

一旦给予许可,然后再试一次。希望代码可以工作

© www.soinside.com 2019 - 2024. All rights reserved.