hao32的个人日志

服务器的php程序附件下载不完整的问题

最近收拾了一台nginx的web server, 就是之前别人配置过了, 他默认是使用nginx unix socket方式跑的
我为了能稳定点, 把nginx重新配置了一下, 换了tcp/socket方式跑
结果出了点问题, 论坛里所有的稍大的附件, 没有特别具体的大小, 应该在60K左右以上的附件, 无论如何都只能下载47.7K, 论坛跑是的discuz, 默认是跑的php4.4.8, fastcgi方式.

我开始了漫长的检查过程, 一开始我怀疑是nginx的某些配置不对, 但是我使用直接下载是正常的, 说明nginx server是没问题的, 我又开始是程序的问题, discuz的attachment.php提供了4种方式的下载”mode”, 即// read local file’s function: 1=fread 2=readfile 3=fpassthru 4=fpassthru+multiple, 默认是2, 我开始一个一个测试, 使用了4, 可以使用例如讯雷, IDM等软件正常下载, 但是正常用IE或者ff的默认下载还是不行, 至多下载50多K, 继续郁闷中…, 为了确定一下, 我测试了其他论坛软件的php处理附件下载, 效果一样! 痛苦了两天吧
无奈咨询了domin, 没多会他居然给解决啦, 我羞愧中… 原来是fastcgi_temp目录的权限问题, domin都修改成777啦, 结果下载正常!!! 那个…一种解决问题的畅快伴随着两天问题未解决苦恼的顺带的一点点的羞愧…不知道怎么形容
后台因为安全的考虑, 我测试把权限都修改会700, 同时清空了fastcgi_temp目录, 结果还是依旧正常, 问题显而易见啦, 之前的fastcgi_temp目录下的文件不管是属组还是属性都比较错乱了, 因此建议如果是升级php或者对web server做正常的操作, 建议把之前程序生成的缓存目录都清理一下, 这样可以减少很多不必要的麻烦, 但是也要小心, 别删错东西, 最后先mv到backup下, 呵呵

4 评论

  1. 我的论坛也出现了这个问题,把那个文件的权限改了后,还是不能下载,每次下载都只有2kB左右,希望能得到您的帮助

  2. 哈之前也一直被这个问题困扰,我也是花了好几天才解决了。

    我是先开启 nginx.conf 中用的错误日志。

    发现下载附件时到/var/tmp/nginx/fastcgi_temp/目录就出错。

    我再设置 nginx.conf 用 root用户启动nginx 居然可以了。

    所以我就知道是权限问题,chmod -R 777 /var/tmp/nginx/fastcgi_temp/ 就解决了。

    不过你的方法更安全些,嘿嘿。

  3. 锦兄!我也搜到这里,牛B!

  4. 牛逼,搜索到你这里了。

发表回复