class 共享主机中的 Lumen 项目未发现异常
class not found exception on Lumen project in shared hosting
我已经使用 Lumen 框架开发了 API,并使用单独创建的作曲包,我计划在 Lumen (API) 和 Laravel(网站)上使用它。
然而我得到:
Class 'Author\Package\Models\ProductItem' not found
本地一切正常(使用相同的 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)。
您的命名空间或 PSR-4 映射不正确。
当您的 class 包含 Models
在其命名空间 Author\Package\Models\ProductItem
中带有大写 M 时,它应该位于 ./model/src/Models/ProductItem.php
(也是大写 M)中。因此命名空间和文件夹名称必须完全匹配。在 Windows/Mac 上这通常不是问题,因为文件系统不区分大小写,但在基于 Linux 的主机上这会导致问题。
或者,您可以更改 PSR-4 自动加载器:
"autoload": {
"psr-4": {
"Author\Package\Models\": "../model/src/models"
}
}
您必须为每个与您的命名空间不匹配的目录执行此操作。
我已经使用 Lumen 框架开发了 API,并使用单独创建的作曲包,我计划在 Lumen (API) 和 Laravel(网站)上使用它。
然而我得到:
Class 'Author\Package\Models\ProductItem' not found
本地一切正常(使用相同的 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)。
您的命名空间或 PSR-4 映射不正确。
当您的 class 包含 Models
在其命名空间 Author\Package\Models\ProductItem
中带有大写 M 时,它应该位于 ./model/src/Models/ProductItem.php
(也是大写 M)中。因此命名空间和文件夹名称必须完全匹配。在 Windows/Mac 上这通常不是问题,因为文件系统不区分大小写,但在基于 Linux 的主机上这会导致问题。
或者,您可以更改 PSR-4 自动加载器:
"autoload": {
"psr-4": {
"Author\Package\Models\": "../model/src/models"
}
}
您必须为每个与您的命名空间不匹配的目录执行此操作。