几周前,在laravel 4应用程序中,我创建了一个工作台包:
/workbench/no-native/wizard
这个包在路径/workbench/no-native/src/events/
中有一个名为Handler
的类,声明如下:
<?php
namespace Wizardevents;
class Handler{
....
为了通过composer转储自动加载,我添加了它:
"autoload": {
"classmap": [
"src/migrations",
"src/controllers",
"src/events",
],
"psr-0": {
"NoNative\Wizard\": "src/"
}
},
好吧,有了这种结构,这个程序包运行得很好。那天,我不得不把这个包裹从workbench/no-native
搬到workbench/native
。步骤如下:
- 将
wizard
目录从no-native
移动到native
目录 - 更新路径和命名空间
- 更新包编写器以针对新的文件结构
执行以下命令(在
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。