我想我可能在PHP的
crypt()
在Windows下运行。
然而
:我知道
可能是我的错
. PHP被数百万人使用,数千人使用;我的代码被数十人使用,我自己使用。(这个论点是最好的
explained on Coding Horror
)
所以我请求帮助:
告诉我我的错。
我已经试着找到它好几天了,没有运气。
设置
我使用的是Windows服务器安装,其中包含Apache2.2.14(win32)和php 5.3.2。“我的开发盒”运行Windows XP Professional;“生产”服务器(这是内部网设置)运行Windows Storage Server 2003。两者都有问题。
我什么都没看到
php.ini
有关
密码()
但会很乐意回答关于我配置的问题。
问题
我的PHP应用程序中有几个脚本偶尔会挂起:页面位于“等待本地主机”上,永远不会结束。每个脚本都使用
crypt
在将用户密码存储在数据库中之前对其进行哈希,或者在登录页面中,在将输入的密码与数据库中存储的版本进行比较之前对其进行哈希。
因为登录页面是最简单的,所以我将重点放在它上面进行测试。我反复登录,发现它可能会挂起10次中的4次。
作为一个实验,我更改了登录页面以使用纯文本密码,并将数据库中的密码更改为纯文本版本。页面停止挂起。
我看到php的最新版本列出了这个错误修复:
修复了错误51059(密码崩溃时
给出了无效的盐。
所以我创建了一个非常简单的测试脚本,如下所示,使用
an official example
:
$foo = crypt('rasmuslerdorf','r1');
echo $foo;
如果我疯狂地重新加载,这个页面也会挂起。我只
看见
它挂在Chrome上,但不管浏览器如何,对Apache的影响是相同的。
对阿帕奇的影响
当这些页挂起时,阿帕奇
server-status page
(我解释过
here
(针对不同的问题)增加正在处理的请求的数量,并减少空闲工作人员的数量。几乎所有正在处理的请求都具有“发送回复”的状态,尽管有时它们会显示“读取请求”或“保持连接(读取)”。
最终,
阿帕奇可能崩溃
. 完成后,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提交一份bug报告。如上所述,反对它的理由是
虫子几乎总是我的错。
不过,我支持“这是PHP的错”的论点是:
我使用的是Windows,而大多数服务器使用的是Linux(我不能选择这个),所以我发现边缘案例的可能性更大。
最近有个bug
密码()
可能还是有问题的
我已经做了我能做的最简单的测试用例,但我仍然有问题。
有人能复制这个吗?
你能告诉我哪里做错了吗?我应该把这个bug归档吗?
提前感谢您提供的任何帮助。