最近使用测试机器下载了4G左右720p高清电影,顺便跑个apache做下载服务,好在家download,结果在家下载缺提示403错误,登陆服务器查询日志,发现如下错误日志: Symbolic link not allowed:/var/www/test.mkv 我是在测试机器上做了个软链接链接到真实的文件存放地址,莫非是文件权限问题,查询文件权限,WEB用户想用读权限. 将真实文件cp到apache document目录,下载又提示如下: (75)Value too large for defined data type: access to /test.mkv failed 访问httpd.apache.org,在首页Apache 2.2.11 Released摘要中提到了 Large File Support,查询2.2版本最新特性,发现以下内容: Large File Support httpd is now built with support for files larger than 2GB on modern 32-bit Unix systems. Support for handling >2GB request bodies has also been added. 查询自己apache版本号,2.0.52,看来2.0.52在32位系统上不支持大于2GB的文件。 刚好闲着没事,验证下这个结果,并确定2GB真实大小(dd中有GB若干字样,但有GB 1000*1000*1000, G 1024*1024*1024) #echo 1024*1024*1024*2 |bc 2147483648 #dd if=/dev/zero of=/var/www/test.bin bs=1MB count=2KB //创建一个2,000,000,000字节大小文件 #wget --spider ....... 长度:2,000,000,000 (2.0G) [text/plain] 200 OK #echo 1 >> test.bin //文件大小已经为2,000,000,002个字节 #wget --spider 长度:2,000,000,002 (2.0G) [text/plain] 200 OK 看来这里apache里边提到的GB和dd中提到的GB(1000*1000*1000)并不相同,而是1024*1024*1024 #dd if=/dev/zero/ of=/var/www/test.bin bs=1M count=2K #stat test.bin File: ‘test.bin’ Size: 2147483648 Blocks: 4198408 IO Block: 4096 一般文件 ......... #wget --spider ........ 已发出 HTTP 请求,正在等待回应... 403 Forbidden 19:21:05 错误 403:Forbidden。 查看apache日志: (75)Value too large for defined data type: access to /test.bin failed 看来2G的文件也不被支持 同时为了验证是不是2G一下文件都支持,切割test.bin文件 #split -b 2147483647 test.bin #wget --spider ...... 长度:2,147,483,647 (2.0G) [text/plain] 200 OK 那么2,147,483,649个字节以上的文件是不是都不能下载哪? #echo 1 >> xaa #wget --spider ...... 已发出 HTTP 请求,正在等待回应... 403 Forbidden 19:31:21 错误 403:Forbidden。 结论: Apache 2.0版本以下(含2.0)在32位操作系统中不支持大于2G文件(含2G),如果需要下载大于2G的文件,可以将该文件切割都小于2G下载或者使用apche 2.2或者以上版本 PS: 网络中提到一种apache编译方法,编译前先export CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64",然后编译,使用64位进行编译,但此方法暂未验证是否有效. 该内容均属于茶余饭后,没事找乐的文章,如果有异议,请留言或者发送E-mail,谢谢