我在PHP的“crypt()”中找到了一个错误?

前端之家收集整理的这篇文章主要介绍了我在PHP的“crypt()”中找到了一个错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想我可能在 WindowsPHP的crypt()函数中发现了一个错误.

但是,我认识到这可能是我的错. PHP被数以百万计使用,成千上万的工作;我的代码被我使用了几十个. (这个说法最好是explained on Coding Horror)

所以我要求帮助:告诉我我的错我一直在试图找到它几天,没有运气.

设置

我正在使用Windows 2.2.14(Win32)和PHP 5.3.2的Windows服务器安装.我的开发框运行Windows XP Professional; “生产”服务器(这是一个内部网设置)运行Windows Storage Server 2003.这两个问题都发生.

我没有看到任何与PHP.ini相关的crypt(),但会很高兴地回答有关我的配置的问题.

问题

我的程序中的几个脚本偶尔挂起:页面坐在那里等待本地主机,从不完成.这些脚本中的每一个使用crypt将用户的密码哈希,然后将其存储在数据库中,或者在登录页面的情况下,将输入的密码进行哈希,然后将其与存储在数据库中的版本进行比较.

由于登录页面最简单,所以我专注于测试.我反复登录,发现它可能会挂起10次.

作为实验,我更改登录页面以使用纯文本密码,并将数据库中的密码更改为纯文本版本.页面停止挂起.

我看到PHP的最新版本列出了这个bug修复:

Fixed bug #51059 (crypt crashes when
invalid salt are [sic] given).

所以我创建了一个非常简单的测试脚本,如下,使用与an official example中给出的相同的盐:

$foo = crypt('rasmuslerdorf','r1');
echo $foo;

这个页面也会挂起来,如果我重新加载它像疯了.我只看到它挂在Chrome上,但无论浏览器如何,对Apache的影响是一样的.

对Apache的影响

当这些页面挂起时,Apache的server-status page(我解释了here,有关不同的问题)增加了正在处理的请求数量,并减少了空闲工作人员的数量.正在处理的请求几乎都有“发送回复”的状态,虽然有时候他们会显示“阅读请求”或“保持活动(读取)”.

最终,Apache可能会崩溃.如果是这样,Windows崩溃报告如下所示:

szAppName: httpd.exe
szAppVer: 2.2.14.0
szModName: PHP5ts.dll
szModVer: 5.3.1.0 // OK,this report was before I upgraded to PHP 5.3.2,// but that didn't fix it
offset: 00a2615

这是我的错吗

我试图向PHP提交一个错误报告.反对它的论点是,如上所述,错误几乎总是我的错.

但是,我赞成“这是PHP错误”的论点是:

>我正在使用Windows,而大多数服务器使用Linux(我不会选择这个),所以机会更大,我发现了一个边缘案例
>最近有一个crypt()的bug,所以也许还有问题
>我做了最简单的测试用例,我还有问题

有人可以复制吗你能建议我出错了吗?我应该提交bug?

提前感谢您提供的任何帮助.

在这个问题上,错误51059(仅关于传递无效输入)或50947(不同的代码,5.3具有在PHP中实现的所有平台上的新算法和功能)与此不相关.

不过http://bugs.php.net/bug.php?id=51424是.我已经在那里贴了一些部分补丁,但是它解决了大部分可能的锁,但这确实是不够的.在下一个5.3版本中将会有一个完整的修复.

顺便说一下,它不是Windows特定的,而是关于线程SAPI(例如,Windows apache 2.2).

原文链接:https://www.f2er.com/php/140093.html

猜你在找的PHP相关文章