Mag*_*s W 7 php jetbrains-ide intellij-idea phpstorm psr-4
我正在 OSx 上使用 PhpStorm 开发一个 Web 应用程序。我正在使用 Composer 并在composer.json. 在我的开发机器上一切正常,但当我上传到运行 Linux 的生产服务器时,自动加载会中断。
经过一番排查后发现,这是因为 OSx 使用的是不区分大小写的文件系统,而 Linux 使用的是区分大小写的文件系统。因为我的命名空间看起来像这样
App\Service\AuthService
Run Code Online (Sandbox Code Playgroud)
虽然我的路径看起来像这样
app/service/AuthService.php
Run Code Online (Sandbox Code Playgroud)
自动加载器在 Linux 上找不到该service文件夹,因为它正在寻找Service(带有大写字母S)。
好的,我可以很容易地解决这个问题,只需重命名所有文件夹和类文件以使用与我的命名空间相同的情况。但为了防止将来出现任何意外的大小写不一致问题,如果 PhpStorm 在我尝试使用时能够警告我,那就太好了
use App/Foo/Bar/HelloWorld;
Run Code Online (Sandbox Code Playgroud)
而实际的文件路径是
app/foo/bar/HelloWorld.php
Run Code Online (Sandbox Code Playgroud)
是否有这样的设置可以让 PhpStorm 自动检查这一点,即使我在具有不区分大小写的文件系统的计算机上进行开发?
这个等效的 Java 问题得到了一个答案,该答案使用较低级别的技术来重新配置 IDE,以将文件系统视为区分大小写。
Mac OSX 上 IntelliJ Idea 中区分大小写的文件
我已经尝试过了,它确实有效,不仅仅是命名空间,还有任何以任何方式不匹配的文件(例如包含、需要)。
但它会在启动时警告您,您曾说过 FS 区分大小写,但实际上它不区分大小写,并链接到本文,其中有一些有关错误使用此设置的警告/警告。
idea.case.sensitive.fs=true您可能会看到:
Filesystem Case-Sensitivity Mismatch
The project seems to be located on a case-insensitive file system.
This does not match the IDE setting (controlled by property "idea.case.sensitive.fs")
More details. (show balloon)
https://confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch
Run Code Online (Sandbox Code Playgroud)
因此,我可能会尝试将其作为一种清除错误的选项,但也许不会一直使用它。