从composer安装软件包后出现错误

时间:2019-11-17 04:48:32

标签: php composer-php

在安装Composer软件包后,我试图包括自动加载器并运行脚本:

require __DIR__ . 'vendor/autoload.php';

这时我收到以下消息:

  

警告:require():open_basedir限制有效。文件(/home/admin/domains/example.com/private_html/map/mt940/_example/vendor/autoload.php)不在允许的路径内:(/ home / admin /:/ tmp:/ var /在/ home / admin / domains中的tmp:/ opt / alt / php72 / usr / share / pear /:/ dev / urandom:/ usr / local / lib / php /:/ usr / local / php72 / lib / php /) /example.com/private_html/map/mt940/_example/example1.php,第6行

     

警告:require(/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php):无法打开流:/ home / admin / domains / example中没有此类文件或目录.com / private_html / map / mt940 / _example / example1.php,第6行

     

致命错误:require():无法打开所需的'/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php'(include_path ='。:/ usr / local / lib / php')在第6行的/home/admin/domains/example.com/private_html/map/mt940/_example/example1.php中

我错过了一步吗?为什么会收到此错误消息?

更新1:

在禁用open_basedir之后,我仍然收到以下错误消息:

  

警告:require(/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php):无法打开流:/ home / admin / domains / example中没有此类文件或目录.com / private_html / map / mt940 / _example / example1.php,第6行

     

致命错误:require():无法打开所需的'/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php'(include_path ='。:/ usr / local / lib / php')在第6行的/home/admin/domains/example.com/private_html/map/mt940/_example/example1.php中

4 个答案:

答案 0 :(得分:1)

您的问题缺少重要信息,这是您项目的目录结构。

我们可以尝试从您的错误消息中猜测出来。

目录/home/admin/domains/example.com/private_html/map/mt940/_example/应包含:

composer.json
composer.lock
vendor/
example1.php
...

如果正确,则当前的require __DIR__ . 'vendor/autoload.php'; 应该有效

如果文件require dirname(__DIR__) . 'vendor/autoload.php';位于更深的目录中,则先前的示例example1.php将起作用。例如

composer.json
composer.lock
vendor/
something/example1.php // <-- notice it's on deeper level
...

答案 1 :(得分:0)

您确定PHP使用的(Linux?)用户可以将文件读入/ home / admin吗?

  • 您可以通过将<?= get_current_user() ?>附加到主体中来进行测试 脚本(example1.php)。然后在浏览器中调用它(通过 Apache / Nginx / etc)。
  • 您可以触摸具有相同权限的“ test.php” 例如example1.php,然后附加require __DIR__ . 'test.php';,则应该得到相同的错误。

/home/admin/domains配置您的权限,或将源移至/var/www/之类的目录(并检查权限)

答案 2 :(得分:0)

从您的错误消息看来,这是一个综合错误。您搜索的文件路径错误,并且没有某些文件的读/写访问权限。您需要确保使用正确的路径,并以 Apache 用户的身份访问文件。

这是生成项目的常见问题。有时文件和文件夹没有适当的系统权限。浏览文件并检查恶意权限。您想同时拥有对大多数文件的读/写权限。

答案 3 :(得分:0)

我要采取的步骤来解决includerequire的问题:###

  1. 检查所需文件是否确实存在

我知道这听起来很愚蠢,但是您不想知道我在所需路径中犯错误的频率有多大

  1. 检查file permissions是否正确

Linux中的权限可能很少。确保正确设置了所有内容。

  1. 检查运行您的网络服务器的用户是否是正确的用户并具有正确的权限

Apache,nginx和其他Web服务器都有自己的用户来执行Web服务器。当然,这取决于您的安装和配置。确保您的网络服务器由正确的用户执行,该用户具有正确的权限。

  1. 确保include_pathcorrect

如果某个包裹弄乱了您的include path,请确保对其进行纠正。