修复 brew 更新后 PHP7 出现 dyld: Library not loaded: libjpeg.8.dylib

2017-10-20123:03:11

前几天电脑升级到了 macOS High Sierra,然后想着 brew 也来一次 update 吧,没想到更新完后 PHP7 就出问题了,这…… 我岂不是连 blog 都部署不了了,赶紧修复。

问题

终端执行 php 后出现:

dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib
  Referenced from: /usr/local/php7/bin/php
  Reason: image not found

分析

这看起是 libjpeg 的问题,于是到 /usr/local/opt/jpeg/lib/ 看了下,发现除了有 libjpeg.8 之外,还有个 libjpeg.9,看起来是 brew 把 9 当成了默认 libjpeg,而我的 PHP7 是自己编译的,估计固定指向了 8。

解决

至此,问题已经很明朗了,所以,只需一个 ln 就能解决问题:

ln -s -f /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/opt/jpeg/lib/libjpeg.8.dylib

加 -f 强制覆盖一下。

php 一下:

PHP 7.1.2 (cli) (built: May 18 2017 18:34:13) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.2, Copyright (c) 1999-2017, by Zend Technologies

Good Job,收工。

- EOF -