14
2020
03

zblogPHP可能错误原因Call to undefined function openssl_pkey_get_public()

这个问题主要是因为php.ini中,extension=php_openssl.dll的选项没有打开,把分号去掉,重启apache即可。

明明各种配置都正确,为什么会有这样的警告?而且函数无法得到正确结果。

最近学习php过程中遇到很多类似的问题 

其实解决办法很简单

找到php目录下的 php.ini 文件 

ctrl+f 查找 extension=php_openssl.dll 将前面的“  ;”号 去掉就可以了

除了这个函数 ,还有可能是其他函数  ,但解决办法都一样

找到文件的这个位置,需要哪个就将哪个前面的分号去掉就可以了

;extension=php_bz2.dll

;extension=php_curl.dll

;extension=php_fileinfo.dll

extension=php_gd2.dll

;extension=php_gettext.dll

;extension=php_gmp.dll

;extension=php_intl.dll

;extension=php_imap.dll

;extension=php_interbase.dll

;extension=php_ldap.dll

extension=php_mbstring.dll

;extension=php_exif.dll      ; Must be after mbstring as it depends on it

extension=php_mysql.dll

extension=php_mysqli.dll

;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client

extension=php_openssl.dll

;extension=php_pdo_firebird.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

;extension=php_pdo_sqlite.dll

;extension=php_pgsql.dll

;extension=php_shmop.dll

这个原因是apache和php的openssl版本不一致。apache和php的openssl功能都依赖于libeay32.dll和 ssleay32.dll这两个库,但是这两个文件并非被apache和php共用,而是各用各的。比如apache中这两个文件一般在bin目录,而 php中就在php目录中。仔细看他们的信息会发现,这些文件都有版本信息,关键就是这个版本不一致导致。有人说将php中的这两个文件直接复制到 apache的bin目录中可以解决问题,但是不推荐这样做,因为也许在其他地方会出现错误。如果是自己配置,就下载apache和php中这两个文件版 本一致的。如果不想自己配置,可以使用xampp1.7.1版本。

原文链接:https://www.qiquanji.com/post/7640.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。