Windows下开发的PHP验证码模块迁移到Linux中使用不了

发布于 2021-12-01 14:46:23 字数 646 浏览 836 评论 6

PHP写的一个验证码模块,在Win环境下使用PhpStudy运行完全正常(apache+php5.4模式),迁移到CentOS中的lnmp环境下后(php-fpm + php5.4),验证码显示不出来

事情不简单,诡异的事现在开始。

之前以为是文件误带BOM了,然后用linux查找BOM,搜索了整个网站目录,无果(grep -r -I -l $'^xEFxBBxBF' ./)。把验证码的PHP文件重新下到Win桌面上用16进制模式确认,也确实没有。

最后没办法只能逐字节比较。以下是Win环境生成的验证码(第一行),和Linux生成的(第二行),发现前三个字节明显就是BOM。

00000000h: 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 ; 塒NG........IHDR

00000000h: EF BB BF 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 ; 锘繅PNG........I

有没有什么好的办法解决这种LinuxPHP环境下产生的神奇BOM?

产生两个验证码的代码文件完全一致,仅运行的环境有区别,网站所有文件都已经排查了并不包含BOM。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

刘备忘录 2021-12-03 19:23:18

嗯,一般就是你在win的文件夹直接新建文件就会出现bom。建议使用编辑器来新建文件。

带上头具痛哭 2021-12-03 19:07:15

引用来自“梦想岛”的评论

编辑器最好用win和linux都有的软件。sublime,phpstorm。还有就是可以搜一下php removebom

无人问我粥可暖 2021-12-03 13:33:12

编辑器最好用win和linux都有的软件。sublime,phpstorm。还有就是可以搜一下php removebom

一人独醉 2021-12-03 10:39:09

大小写问题?

风透绣罗衣 2021-12-03 04:02:41

我只是来水的.

 得改php代码,明显是生成png文件但当成文本文件来输出流了

改用字节输出如:PNGCache.write(byte)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文