在apache php linux主机上返回区分大小写的文件

时间:2013-12-17 16:59:58

标签: php linux apache case-sensitive

我正在使用免费托管(linux [apache,php,mysql])来测试一些php脚本..

其中一个是使用and algorythm从mysql id创建一个唯一标识符(UID)。

因此1变为aaaaaaaab,依此类推。

我正在使用该UID字符串将图像存储在服务器上(正常工作)。

现在我发现阅读中的文件系统是不区分大小的。

所以我有aaaaaaaab.jpg& aaaaaaaaB.jpg但我总是先得到大写图片。


有没有办法用php返回正确的图像?


注1:我能够以大写和小写存储图像。(正常情况下,linux文件系统区分大小写)

Note2:由于这是免费托管我可能无法使用.htaccess或修改php,文件系统设置。但是,如果Note3不正确,我也会接受包含.htaccess解决方案的答案。

注3:他们有票务系统,但没有回答。

Note4:一切都在我的本地服务器上运行。


我尝试了什么:

directlink - 'ht * p://myurl.test/img/aaaaaaaab.jpg'

file_get_contents('aaaaaaaab.jpg')

fopen('aaaaaaaab.jpg',r)

也是404'ht * p://myurl.test/aaaaaaaab'的重定向脚本

在所有这些情况下,我得到了'aaaaaaaaB.jpg'


我也在这里阅读了大部分已经回答的问题。但它们主要包括修改文件系统或php设置& (htaccess,但对我的情况不正确)


文件系统区分大小写(写入)&不区分大小写(阅读)


UID脚本.. https://stackoverflow.com/a/18455796/2450730

3 个答案:

答案 0 :(得分:0)

我的第一个建议是转移到另一个主机。文件系统要么区分大小写,要么不区分大小写以进行读写。其他一切都毫无意义。 (并且主持人没有回应支持票 - 但你对什么都没有期待。)

如果无法做到这一点,您可以从UID脚本中删除大写字母,或者以其他方式生成唯一ID,而不使用大写和小写值。

答案 1 :(得分:0)

我会重命名文件。

将您的算法更改为仅使用一个案例并重命名所有现有文件(我假设您要保留已存储的内容)。请记住,当您重命名文件时,它将始终首先重命名大写,因此您将所有带有大写名称的文件移动到新名称。

答案 2 :(得分:0)

主机上的Mod_alias可能配置为执行不区分大小写的匹配,因此您可以删除它。

然而,这个方案总体来说似乎是一个糟糕的主意。如果您有ID,则可以使用它。或者创建一个实际的UUID或使用uniqid()。