Laravel ClassLoader包含一个不正确/旧的文件


Laravel ClassLoader includes an incorrect/old file

几周前,在laravel 4应用程序中,我创建了一个工作台包:

/workbench/no-native/wizard

这个包在路径/workbench/no-native/src/events/中有一个名为Handler的类,声明如下:

<?php
namespace Wizard'events;
class Handler{
    ....

为了通过composer转储自动加载,我添加了它:

"autoload": {
    "classmap": [
        "src/migrations",
        "src/controllers",
        "src/events",
    ],
    "psr-0": {
        "NoNative''Wizard''": "src/"
    }
},

好吧,有了这种结构,这个程序包运行得很好。那天,我不得不把这个包裹从workbench/no-native搬到workbench/native。步骤如下:

  1. wizard目录从no-native移动到native目录
  2. 更新路径和命名空间
  3. 更新包编写器以针对新的文件结构
  4. 执行以下命令(在native中,新路径):

    /home/user/public_html/my-app/workbench/native/wizard# composer update
    /home/user/public_html/my-app/workbench/native/wizard# composer dump-autoload
    

完成后,我注意到在我的localhost实例中,应用程序在更改后运行良好,但在我的实时服务器中显示了一个异常:

include(/home/user/public_html/my-app/workbench/no-native/wirzard/src/events/Handler.php):无法打开流:没有这样的文件或目录文件:/home/user/public_html/myApp/vendor/comporter/ClassLoader.php第382行

我假设应用程序仍在尝试从旧路径加载Handler类。然后,我运行命令以"清理"或"优化"应用程序:

# php artisan optimize
# php artisan dump-autoload

例外仍然存在。实时服务器具有与我的localhost实例相同的代码,因为两者都通过Github使用克隆的源。我不知道我是不是错过了什么。我的最后一个选择是通过命令创建一个新的包,然后再次创建类。但在此之前,我想请您提供其他选择。

提前谢谢。

是否已更新您的packagist存储库。很多时候,它在将代码推送到github时不会自动更新,所以尝试强制更新它。之后,尝试清除composer cathe,然后运行php-artisan dump autoload。