# 记一次homebrew安装的php5.6 执行openssl\_decrypt函数502的异常

**URL:** <https://www.shiqidu.com/t/topic/805>\
**Category:** 开发调优\
**Tags:** PHP\
**Created:** [2023 年10 月 26 日 08:04 UTC](https://www.shiqidu.com/t/topic/805 "2023-10-26T08:04:27Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)\
发布日期： [2023 年10 月 26 日 08:04 UTC](https://www.shiqidu.com/t/topic/805/1 "2023-10-26T08:04:27Z")

</div>

php5.6是用homebrew安装的，用的包用的是 `shivammathur/php/php@5.6`

执行下面的代码

```php
openssl_decrypt($encrypted, $this->method, $this->key, $this->options, $this->iv)

```

原因是这个作者在两个月前的更新里把依赖的openssl版本从1改成了3，在openssl3下执行某些解密方法会抛出502错误。

 ![rb](https://discourse.shiqidu.com/uploads/default/original/1X/197c00de91561754c3387b05b4be2787f959bb44.png)

而在我们执行brew install命令的时候，homebrew 顺带把php5.6也更新了。

所以解决思路是把旧的rb文件找回来，重新安装php5.6。

rb文件路径

```auto
/opt/homebrew/Library/Taps/shivammathur/homebrew-php/Formula/php@5.6.rb

```

怎么找回旧的rb文件（即：安装旧版本），可以通过git log， git reset 恢复回来，我是直接去作者的github上通过作者提交记录找到了依赖openssl1.1的旧版本php5.6的rb文件。

作者的更新

 ![作者的更新](https://discourse.shiqidu.com/uploads/default/original/1X/6002968f0a6085118cb248ffc403f71d69d6aaaa.png)

找到旧rb文件后只需要覆盖一下新的rb文件，然后卸载现有的php5.6，之后再重新安装即可。

 ![phpinfo](https://discourse.shiqidu.com/uploads/default/original/1X/47ea75c65f0d37cb246dfc8798e9330cc9a414d4.png)

至此问题已经解决，但是brew每次我安装一个软件自动把其他本地已存在的软件全部更新的设计不是智障吗？网上的说的禁止自动更新的方法是 `export HOMEBREW_NO_AUTO_UPDATE=true`，但是我试了并没有什么卵用。
