加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

如果某些目录权限不正确,则phpbb 3.1.6会生成损坏的头像

发布时间:2020-05-29 08:38:40 所属栏目:Nginx 来源:互联网
导读:注意:已解决-请参阅下面的答案.问题保留以供参考.某种原因导致nginx或php或phpbb(或其他东西)向从phpbb下载的头像文件的开头添加1个字节.这会损坏文件.为了排除Cloudflare之类的外部因素,我现在将phpbb设置为非https,仅限localhost,关闭压缩.从以下代码可以

注意:已解决-请参阅下面的答案.问题保留以供参考.

某种原因导致nginx或php或phpbb(或其他东西)向从phpbb下载的头像文件的开头添加1个字节.这会损坏文件.

为了排除Cloudflare之类的外部因素,我现在将phpbb设置为非https,仅限localhost,关闭压缩.

从以下代码可以看出问题:

从本地主机获取文件-无需缓存或cloudflare即可进行干预:

wget http://localhost/forum/download/file.php?avatar=4625_1413540046.jpg -O avatest_local.jpg
‘avatest_local.jpg’ saved [6419/6419]

测试文件

jpeginfo avatest_local.jpg
avatest_local.jpg  Not a JPEG file: starts with 0x0a 0xff  [ERROR]

查找相同的文件(phpbb对文件名做奇怪的事情)

find /var/www/forum/images/avatars/upload  -size 6419c
/var/www/forum/images/avatars/upload2a36dc33069249d6b1187fd84d7fc957_4625.jpg

测试那个文件,发现它是好的

jpeginfo /var/www/forum/images/avatars/upload/2a36dc33069249d6b1187fd84d7fc957_4625.jpg
./2a36dc33069249d6b1187fd84d7fc957_4625.jpg   80 x 80   24bit JFIF  N    6419

检查原始文件的前几个字节:

xdd /var/www/forum/images/avatars/upload/2a36dc33069249d6b1187fd84d7fc957_4625.jpg
0000000: ffd8 ffe0 0010 4a46 4946 0001 0101 013a  ......JFIF.....:
0000010: 013a 0000 ffed 0036 5068 6f74 6f73 686f  .:.....6Photosho
0000020: 7020 332e 3000 3842 494d 0404 0000 0000  p 3.0.8BIM......

检查下载文件的前几个字节,并查看额外的位:

xdd avatest_local.jpg
0000000: 0aff d8ff e000 104a 4649 4600 0101 0101  .......JFIF.....
0000010: 3a01 3a00 00ff ed00 3650 686f 746f 7368  :.:.....6Photosh
0000020: 6f70 2033 2e30 0038 4249 4d04 0400 0000  op 3.0.8BIM...

从下载的文件中剥离掉第一位以证明这一点:

tail -c +2 avatest_local.jpg > avatest_fixed.jpg
jpeginfo avatest_fixed.jpg
avatest_fixed.jpg   80 x 80   24bit JFIF  N    6418

可能相关,也可能不相关,但是如果我使用chrome标头查看器检查器,则头像的http响应标头显示以下内容:

content-disposition inline; filename=4625.jpg

但是,如果我使用redbot,它将显示:

Content-Disposition: inline; filename*=UTF-8''4625.jpg

并警告

The Content-Disposition header doesn’t have a ‘filename’ parameter.

但是,在官方的phpbb板上,content-disposition标头似乎是正确的,尽管正如您在下面看到的那样,这似乎并不影响查看图像的其他方法.

摘要:

>以/download/file.php?avatar=4625_1413540046.jpg格式下载或查看化身时,会将单个字节添加到文件中,使其无效.
>在查看/download/file.php?id=2871之类的图像时,该图像完全有效并显示OK.
>当前服务器上的所有图像文件均有效.
>我已经在“ lint”模式下运行了php,所有文件似乎都有效.
>我尝试在非https中将板作为“ localhost”运行,以完全消除外部因素.
>我已禁用所有扩展名,甚至删除了它们的文件.
>通过删除所有核心文件并复制新的核心文件,可以升级此板.
> Nginx可以很好地直接提供图像和其他文件,并且同一台服务器上的其他软件运行良好.

服务器详细信息:

nginx 1.9.4
PHP 5.6.4-4ubuntu6.3
phpbb 3.1.6
Linux 3.19.0-30-generic #34-Ubuntu SMP Fri Oct 2 22:07:32 UTC 2015 i686 i686 i686 GNU/Linux

一整天都花在了这一点上,我自己和phpbb论坛都完全被弄糊涂了.自从更新到phpbb 3.1.6以来才开始发生.显然,这是我独有的问题.或者可能不是? 最佳答案 也许您之后还有一些空行?在PHP文件?这可能是原因

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读