Sistema de arquivos que não diferencia maiúsculas de minúsculas para servidor de produção?

10

A situação inicial é assim:

  • O software corporativo é baseado em PHP.
  • É entregue pelo Apache 2 em um servidor Windows 2003.
  • É grande .
  • É um legado de desenvolvedores pouco profissionais que não se importam com a distinção entre maiúsculas e minúsculas ou separadores de diretório.

A situação desejada é assim:

  • Tudo migrou para o Apache 2 sob uma distribuição Linux de sabor ainda indeciso.

Problema:

  • Infinitas toneladas de código sem se preocupar com o distinção entre maiúsculas e minúsculas ou caractere separador de diretório.

Eu já fiz algumas pesquisas, mas infelizmente não encontrei nada que fosse adequado também para um ambiente de produção. CIOPFSparece bom, mas é explicitamente destinado a não ser usado em sistemas de produção. Você pensaria mod_spellingque o Apache seria uma opção? A questão ainda não resolvida para mim é se o PHP acessa arquivos com a ajuda desse módulo ou diretamente (o que o tornaria inútil).

Devemos engolir a pílula amarga e passar por todo o código? Gostaríamos de evitar isso, pois substituiremos o ambiente atual do software, peça por peça, por novos itens de compilação (a longo prazo).

Pedro
fonte
Outra possibilidade poderia ser criar algum tipo de proxy ( mod_rewrite) para o aplicativo herdado (residindo na configuração antiga) por meio do novo servidor, substituindo as peças dessa maneira ... talvez.
sr_ 23/02/12
Hospede-o no OS X em vez do Linux ... você ainda obtém seu ambiente unix, mas também obtém um sistema de arquivos que não diferencia maiúsculas de minúsculas.
Larsks
@sr_ Isso poderia fazer o trabalho. Porém, como estamos executando um grande sistema de loja on-line que já causa tráfego suficiente, pelo menos o dobro (não importa se a rede é interna ou externa). Tanto quanto eu entendo.
Peter Peter
@larsks Mesmo que eu incentive o OS X para os negócios, não acho mais que ele tenha futuro como servidor da web em larga escala. Além disso, nossa empresa está incentivando o uso de software de código aberto e se esforça para permanecer o mais independente possível da plataforma.
Peter Peter
Apenas uma atualização: infelizmente, os módulos apache não estão fazendo o trabalho, pois são os únicos invocados no caso de solicitações HTTP, a função include do PHP, por exemplo, acessa os arquivos diretamente. Vou experimentar a abordagem do samba mencionada abaixo agora.
Peter

Respostas:

3

O ZFS e o JFS podem ser configurados para não fazer distinção entre maiúsculas e minúsculas:

zfs create -o casesensitivity=insensitive filesystem

jfs_mkfs -O /dev/sdax

Editar (7 anos depois):

Como o @JorgeYanesDiez comentou, o kernel Linux finalmente adicionou ext4 por diretório, sem distinção entre maiúsculas e minúsculas, a partir da versão 5.2 e efsprogs 1.45.

Observe que Linus Torvalds foi fortemente contra o recurso .

jlliagre
fonte
11
Para quem vê isso em 2020, o ext4 acabou de adicionar o suporte caseFold. Você precisa do Linux Kernel 5.2 e e2fsprogs 1.45 ou posterior. Procure chattr + F
Jorge Yanes Diez
2

Você pode usar o Samba para compartilhar um sistema de arquivos local de uma maneira que não diferencia maiúsculas de minúsculas ... este artigo tem alguns detalhes.

larsks
fonte
2
Isso é completamente insano, mas a OMI é a menos insana de todas as outras opções.
Jgoldschrafe
@larsks Obrigado, vou dar uma olhada mais profunda e experimentar como funciona.
Peter Peter
@larsks Embora eu tenha seguido o artigo e tentado algumas variações, infelizmente não funcionou para nós. Obrigado mesmo assim. Acabamos decidindo reescrever tudo o que não funciona no sistema de arquivos confidenciais, pois outras alternativas parecem levar muito tempo.
Peter
1

Escreva seu próprio invólucro de fusível que não diferencia maiúsculas de minúsculas sobre qualquer outro fs? Com algum código python, isso pode ser feito rapidamente.

Leon
fonte