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
(我会收集,因为它是不必要的(作曲家在update
,install
等上生成这些东西。
但是,每当我去浏览器中加载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 */ ]);
希望之后您不会遇到其他任何东西!
它使用了League
的composer.json
确实带来的代码,但是要使用此特定的提供商,您必须在适当的名称空间中引用其代码。
另一个提示正在查看他们在Composer.json中的自动加载定义:
"autoload": {
"psr-4": {
"Bramdevries\Oauth\Client\": "src"
}
},