Linux Docker部署PHP项目找不到app\core\Request类如何解决
问题根因
该错误核心触发原因是Windows与Linux文件系统的大小写敏感规则差异:Windows本地NTFS文件系统默认不区分文件名大小写,存在命名不规范时不会触发加载错误;Debian使用的Linux原生文件系统严格校验文件名大小写,部署后不规范的命名会直接导致类找不到的致命错误。
具体存在的不规范项:
- 文件名、目录名大小写与命名空间、类名不匹配,不符合PSR-4自动加载规范
- 存在文件名拼写错误
对应到项目里的具体问题:
- 代码中命名空间定义为
app\core,但项目根目录命名为App、核心类子目录命名为Core,首字母大小写不对应 - core目录下请求类文件名为
request.php、响应类文件名为response.php,但代码中实例化的类名为Request、Response,文件名首字母未大写 - core目录下应用类文件名为拼写错误的
Applicatoin.php,和代码中定义的类名Application不匹配
修复方案
按以下步骤操作即可解决:
- 重命名目录和文件,保证大小写、拼写和命名空间、类名完全一致
- 将根目录
App重命名为app,子目录Core重命名为core - 将core目录下的
request.php重命名为Request.php,response.php重命名为Response.php - 将拼写错误的
Applicatoin.php重命名为正确的Application.php - 检查其余目录、文件:
src下的controller目录、HomeController.php等文件,同样要保证命名空间、类名、文件名大小写完全对齐
- 将根目录
- 重新生成自动加载映射
如果使用Composer管理依赖和自动加载,先确认composer.json中PSR-4配置正确,参考配置如下:
配置确认无误后,在项目根目录执行命令重新生成自动加载文件:"autoload": { "psr-4": { "app\\": "./" } }composer dump-autoload -o - 修正容器内项目文件权限
避免因web进程无文件读取权限导致类加载失败,在容器内执行以下命令修正权限:chown -R www-data:www-data /var/www/test/ find /var/www/test/ -type d -exec chmod 755 {} \; find /var/www/test/ -type f -exec chmod 644 {} \;
完成以上操作后重启Apache容器服务即可正常运行。
内容的提问来源于stack exchange,提问作者Bjop
相关产品推荐
相关产品推荐

