PHP 从库中找不到应该由 Composer 自动加载的类



php似乎找不到我试图从作曲家自动加载的库中定义的类。

我过去很高兴Apache 2.4为我提供了成功,但是将作曲家引入混音对我来说很麻烦。我正在尝试使用oauth2库进行Slack,并在VirtualHost的文档根中成功安装了使用composer require bramdevries/oauth2-slack,因此文件结构看起来像:

+-- composer.json
+-- composer.lock
+-- index.php
+-- vendor/
|  +-- autoload.php
|  +-- composer/
|  +-- bramdevries/
|  |   +-- <library files>
|  ... dependencies

这个库是我迄今为止唯一使用的库,我的index.php是整个文档根中唯一的源文件,它不是composer/中的库。就所有目的和目的而言,该项目大约是3行PHP代码,如下所示。

从我对作曲家文档的理解中:由于我使用的是提供其composer.json的库,因此作曲家应照顾如果我做composer dump-autoload(我会收集,因为它是不必要的(作曲家在updateinstall等上生成这些东西。

但是,每当我去浏览器中加载index.php时,Apache2都会以HTTP 500响应。

给定上述文件结构,这是我的index.php的整个:

<?php
require "vendor/autoload.php";
$slack = new LeagueOAuth2ClientProviderSlack([ /* stuff */ ]);
?>

这是/var/log/apache2/error.log中发现的错误:

PHP Fatal error: Uncaught Error: Class 'League\OAuth2\Client\Provider\Slack' not found in <document_root>/index.php:3
Stack trace:
#0 {main}
  thrown in <document_root>/index.php on line 3

所以,我显然做错了什么,但是什么?

我已经使用了Apache2和PHP一段时间(包括本学期的CS PROCTONE CS项目课程的项目(,但是我对PHP的工作知识仅限于功能方面。我的OOP方面并没有太多搞砸。另外,我熟悉类似于作曲家(特别是NODE.JS的NPM(的依赖性/软件包管理器,但对作曲家本身不熟悉。tia!

编辑:忘了添加 - 我已经四处搜索,以至于任何给定的Google搜索的前几页上的每个链接都显示出紫色,到目前为止,我尝试过的任何链接都对我有用,所以我'我肯定我只是错过了一步之类的。

他们的示例似乎是不正确的,或者也许更改了,他们忘了更新读数。

如果您查看了Slack提供商的来源,则在命名空间BramdevriesOauthClientProvider中。

您只需要将构造函数更改为:

$slack = new BramdevriesOauthClientProviderSlack([ /* stuff */ ]);

希望之后您不会遇到其他任何东西!

它使用了Leaguecomposer.json确实带来的代码,但是要使用此特定的提供商,您必须在适当的名称空间中引用其代码。

另一个提示正在查看他们在Composer.json中的自动加载定义:

"autoload": {
    "psr-4": {
        "Bramdevries\Oauth\Client\": "src"
    }
},

相关内容

  • 没有找到相关文章

最新更新