【发布时间】:2009-11-18 20:35:34
【问题描述】:
当我在命令行上使用 php -r <code> 以及使用 php <file>、php -f <file> 执行文件或在 Apache 中运行代码时,PHP 似乎给出了不同的哈希值。
例如,在命令行中使用-r 的SHA1 用法:
$ php -r "print sha1('$1S*90');"
77cd8b48ceca53e018f80536b0a44c5b6710425f
当我尝试对下面的文件 testSHA.php 进行相同操作时:
<?php
print sha1('$1S*90');
?>
并使用mod_php5在命令行或Apache内部运行它:
$ php testSHA.php
201cb5aaa7d4db1a49d9be1f2c06d45e4c2a69f2
但奇怪的是,当我尝试使用不同的输入字符串(例如“123456789”)时,使用这两种方法的哈希值确实匹配。
我不认为我在这两种方法中使用了不同的编码或字符集。我还尝试使用 MD5,但在命令行中仍然可以使用 -r 和 '-f' 获得不同的哈希值。
有人能指出为什么使用上述两种方法的哈希值会不同吗?有没有办法在命令行上运行 PHP,我可以在不将其输入文件的情况下键入代码,并查看输出,就好像它在文件/Apache 中运行一样?未设置单步调试代码时,我使用命令行进行快速 sn-p 测试。
谢谢。
PS:我在 OpenSUSE 11.1 上使用 PHP 5.2.11 和 Suhosin-Patch 0.9.7 (cli)。
【问题讨论】: