我处于一种情况,我不得不在Laravel项目中使用某些应作为Composer程序包的东西,而只是将其作为我的项目文件的一部分(据我所知,Composer程序包中包含我无法提供的错误解决,我正在使用同事提供给我的类似php文件的文件夹)
我将尽力提供尽可能多的背景信息:
我已将所有文件安装到以下目录的文件夹中:\app\Channels\V1\Helpers\MarketplaceWebService\
。文件类似于this project,但不同
为了加载上述文件夹中的类,我在composer.json文件中添加了一行:
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"app/Channels/V1/Helpers/MarketplaceWebService"
]
},
classmap数组中的最后一行-我用它来将类加载到我的项目中,因此现在我可以通过任何普通laravel文件顶部的use MarketplaceWebService_Client;
来要求它们。>
现在在很多情况下,这可以正常工作-我可以启动课程,并且它们会从正确的位置拉出。
但是,任何时候我使用其中一个具有相对require_once
的MarketplaceWebService时,都会失败
[我有一个同一个小伙子~~~~~~~~~~~~,这是基于我收到的错误消息,这些相对amazon-mws-orders
调用是由于相对于该软件包而产生的一些奇怪原因,而不是相对于我所在文件的位置。
例如,如果文件包含require_once
,并且require_once ('Interface.php');
与该文件位于同一文件夹中,则可以正常工作,但是如果文件包含Interface.php
,我会收到一条可爱的消息:
中寻找相对需求一样require_once ('../Model.php')
而且我在Xdebug中设置了一些断点,实际上它是
500 - {"message":"MarketplaceWebService_Client::main(): Failed opening required '../Model.php' (include_path='/home/devchannelapi/laravel/vendor/tilleuls/amazon-mws-orders/src:.:/opt/alt/php72/usr/share/pear')",exception":"Symfony\\Component\\Debug\\Exception\\FatalErrorException", "file":"/home/devchannelapi/laravel/app/Channels/V1/Helpers/MarketplaceWebService/Model/SubmitFeedResponse.php","line":22
的第22行,上面写着/Model/SubmitFeedResponse.php
,而require_once('../Model.php')
类的确是该文件之上的目录,因此您可以期望require_once工作声明。实际上,如果我复制了Model.php
并将其放入Model.php
文件夹,并将require语句更改为/Model
,则它确实可以工作!但是无论何时我离开相对需求,它都会给我类似上面的错误消息,好像它在require_once('Model.php')
现在我已经完成了/home/devchannelapi/laravel/vendor/tilleuls/amazon-mws-orders/src
,我对Laravel类的加载还不了解,无法理解为什么还会发生这种情况。
任何帮助将不胜感激。
我有一种情况,我不得不在Laravel项目中使用某些应作为Composer程序包的东西,而只是将其作为项目文件的一部分(据我所知,这个Composer程序包...
我能够用composer dump-autoload
进口替换所有相对进口