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

Posted

技术标签:

【中文标题】在共享主机中的 Lumen 项目上找不到类异常【英文标题】:class not found exception on Lumen project in shared hosting 【发布时间】:2018-06-12 23:04:34 【问题描述】:

我已经使用 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)。

【问题讨论】:

【参考方案1】:

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

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

您也可以更换您的 PSR-4 自动装载机:

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

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

【讨论】:

不同的情况也应该在 Mac 上调用问题。 @Tpojka 可以,是的。 macOS 允许您在区分大小写和不区分大小写的文件系统之间进行选择。默认情况下是后者。 @dbrumann 非常感谢。不知道这个。我在过去 8 个月左右使用 mac,我认为它默认不区分大小写。似乎我正在按照一些步骤安装不区分大小写的操作系统,但由于没有经验,后来又回来了。我表现得好像系统不区分大小写(一盎司的预防胜过一磅的治疗)。嗯没想到会这样。谢谢

以上是关于在共享主机中的 Lumen 项目上找不到类异常的主要内容,如果未能解决你的问题,请参考以下文章

如何在共享主机(子域)上部署流明框架

如何在共享主机中为 Lumen 应用程序设置 cron 作业(使用 CPanel)?

在 Heroku 上找不到类“Memcached”

无法在共享主机中安装流明

Laravel 和 Lumen ACL 与共享代码库

为啥我在vmware设置的主机共享文件夹在虚拟机中看不到?