在Laravel文件夹中执行require_once的问题

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

我处于一种情况,我不得不在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程序包...

php laravel require autoload
1个回答
1
投票

我能够用composer dump-autoload进口替换所有相对进口

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