PHP7.0.5内置hash()函数未定义,如何添加标准哈希函数?
嘿,我之前也碰到过类似的坑!虽然PHP 7确实默认自带hash扩展,但有些场景下它可能没被正确编译或启用,给你几个实用的排查和解决步骤:
先确认hash扩展是否存在:创建一个简单的php文件(比如
phpinfo.php),内容如下:<?php phpinfo(); ?>访问这个文件后,在页面里搜索“hash”关键词。如果找不到任何关于hash模块的信息,说明你的PHP环境确实没加载这个扩展。
检查php.ini配置:打开你的php.ini文件,查找
disable_functions这一行,看看里面有没有把hash列进去。如果有,把它从列表中移除,然后重启你的Web服务器(比如Apache/Nginx)或者PHP-FPM服务。如果是编译安装的PHP:有些自定义编译的PHP可能会手动禁用了hash扩展。这时候你需要重新编译PHP,记得加上
--enable-hash参数(这是PHP 7的默认启用项,但如果之前编译时特意去掉了,就得加回来)。包管理器安装的情况:如果你是用系统包管理器(比如apt、yum)安装的PHP,有可能是PHP核心包损坏导致hash扩展丢失。可以尝试重新安装对应版本的PHP包,比如Ubuntu/Debian下用
sudo apt reinstall php7.0,CentOS/RHEL下用sudo yum reinstall php70w(具体包名根据你的发行版调整)。
另外,你的代码本身是没问题的,只要hash扩展正常启用,hash('sha256', 'The quick brown fox jumped over the lazy dog.')应该能正常返回对应的哈希值。
内容的提问来源于stack exchange,提问作者Jason Peterson

