php-blowfish-hashing with-crypt():CLI结果不同于webserver';是一个

php-blowfish-hashing with-crypt():CLI结果不同于webserver';是一个,php,blowfish,crypt,Php,Blowfish,Crypt,当我在web服务器上使用php函数crypt()时,使用Blowfish算法: <?php echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0')); php -r "echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));" 但是如果我在命令行中使用PHP解释器: <?

当我在web服务器上使用php函数crypt()时,使用Blowfish算法

<?php

    echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));
php -r "echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));"
但是如果我在命令行中使用PHP解释器

<?php

    echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));
php -r "echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));"
我得到了另一个结果:

a0SqNHxQ8/2mA
你有什么想法吗

该系统是: Apache/2.2.3(CentOS),
PHP 5.4.26版

这是因为命令字符串中带有以下数字的美元符号在bash中也被解释为美元符号

当您逃离它们时,它将按预期工作:

$ php -r "echo crypt('SAD123', sprintf('\$2a\$10$%s', '7711cbpe58dfpogiu049857f011werb0'));"
因此,当您想在comman行中修补一些PHP时,您应该以交互方式运行它:

$ php -a
php > echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));