在共享主机中的Lumen项目上找不到类异常

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

我使用Lumen框架开发了API,并使用了单独创建的composer包,我计划在Lumen(API)和Laravel(Web站点)上使用它。

但是我得到:

未找到“Author \ Package \ Models \ ProductItem”类

本地一切正常(使用相同的Apache和PHP版本)。我的目录结构是:

|
\_ api (Lumen code)
|
\_ model\
|  \_ src\
|  |  \_ migrations\
|  |  |
|  |  \_ models\
|  |  | \_ ProductItem.php
|  |  |...
|  |
|  \_ composer.json
|
\_ www (Laravel code)

api\composer.json我有:

...
"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Author\\Package\\": "../model/src"
    }
},
...

本地和主机配置之间的区别仅在于Composer的版本(本地为1.5.2,远程为1.4.2)。

php laravel composer-php lumen
1个回答
4
投票

您的命名空间或PSR-4映射不正确。

当你的类在命名空间Models中包含大写字母M的Author\Package\Models\ProductItem时,它应该位于./model/src/Models/ProductItem.php(也是大写字母M)中。因此命名空间和文件夹名称必须完全匹配。在Windows / Mac上,这通常不是问题,因为文件系统不区分大小写,但在基于Linux的主机上,这会导致问题。

或者,您可以更改PSR-4自动装载机:

"autoload": {
    "psr-4": {
        "Author\\Package\\Models\\": "../model/src/models"
    }
}

您必须为每个与您的命名空间不匹配的目录执行此操作。

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