PHP 自 Windows 移轉至 Linux 遇到字元大小寫區分的 php require_once 引入時遇到的坑

最近在協助開發的同事移轉原本的系統,原來的系統是在 Windows 上的 Apache + PHP, 想當然爾就是建議架構移轉至 Linux 的環境,對於橫向擴展及性能管理較容易管控,因此搭建好系統,開始轉移

首先就遇到 Windows 內是不分字元大小寫, Linux 是會區分的(這句話是有語病,嚴格來說是 Partition 是會區分大小寫)如果是URL內的大小寫其實很容易透過URL Rewrite進行一一解決,但量太多,而且個人不想做這種笨蛋事,所以比較想用一勞永逸的方式來解決

因此網路上的對應的解法是採用 vfat ,即掛上vfat 的partition來解決區分大小寫的限制,掛上後發現vfat 支援owner.group上 不完全支援,因此在抄寫原來的檔案會有一堆的 failed: Operation not permitted (1) 的錯誤, 因此再另外找其它的解法,看到另一篇先進 https://ubuntuforums.org/showthread.php?t=1497253 的解法是改採用 jfs 並在mkfs 時加入 -O 去支援忽略大小寫問題

ubuntu 環境,所以我是這樣解

apt-get install jfsutils
dd if=/dev/zero of=/opt/virtual.dsk bs=4096 count=1572864
mkfs.jfs -O /opt/virtual.dsk
mkdir -p /usr/share/nginx
mount /opt/virtual.dsk /usr/share/nginx -t jfs -o loop
umount /mnt/jfs/

也請加入 /etc/fstab 內

看來就沒有問題了