PHP, похоже, дает различные значения хеш-функции, когда я использую php -r <code>
в командной строке и когда я запускаю файл с php <file>
, php -f <file>
или запускаю код внутри Apache.
Например, использование SHA1 в командной строке с использованием -r
:
$ php -r "print sha1('$1S*90');"
77cd8b48ceca53e018f80536b0a44c5b6710425f
Когда я пытаюсь сделать то же самое с файлом testSHA.php
ниже:
<?php
print sha1('$1S*90');
?>
и запустите его из командной строки или внутри Apache, используя mod_php5
:
$ php testSHA.php
201cb5aaa7d4db1a49d9be1f2c06d45e4c2a69f2
Как ни странно, хэши совпадают с использованием двух методов, когда я пытаюсь использовать другую входную строку, например «123456789».
Я не думаю, что я использую разные кодировки или набор символов в двух методах. Я также пытался использовать MD5 и по-прежнему получать различные хэши в командной строке с -r
и '-f'.
Может ли кто-нибудь указать, почему хэши могут отличаться, используя два метода выше? Есть ли способ запустить PHP в командной строке, где я могу ввести код, не вводя его в файл, и посмотреть вывод, как если бы он был запущен внутри файла / Apache? Я использую командную строку для быстрого тестирования фрагмента, когда пошаговая отладка кода не настроена.
Спасибо.
PS: я использую PHP 5.2.11 с Suhosin-Patch 0.9.7 (cli) на OpenSUSE 11.1.