我正在尝试用Homebrew安装php 7.2.11(运行Mac OS X High Sierra 10.13.3(。在运行install命令之前,我清除了以前所有的Homebrew php目录,运行了doctor等。当我运行brew install php
时,它说"postinstall php没有成功完成"。然后我运行
HOMEBREW_DEBUG=1 brew -v postinstall php
输出显示
An exception occurred within a child process:
Errno::EEXIST: File exists @ syserr_fail2_in -/usr/local/Cellar/php/7.2.11/pecl
命名文件实际上是一个符号链接:
pecl -> /usr/local/lib/php/pecl
但是/usr/local/lib/php/pecl并不存在。(我不想安装任何PECL扩展。(
有人能告诉我这个错误意味着什么吗?更重要的是,如何纠正它?
我在安装时遇到了同样的问题php@5.6使用CCD_ 5。我被它卡住了,现在放弃了这种方式来安装php的旧版本。以下是我所做的大致情况。
首先,我去掉了悬挂的象征性链接。作为备份,我将链接临时存储在其他地方。然后我重新运行postinstall
。这次输出说
dyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
Referenced from: /usr/local/Cellar/php@5.6/5.6.40/bin/php
Reason: image not found
事实上,这是因为之前安装了一个新版本的openssl v1.1。所以在那个目录下是/usr/local/opt/openssl/lib/libcrypto.1.1.0.dylib。然后我不得不降级openssl
:
brew uninstall --ignore-dependencies openssl@1.1
并在此之后安装了旧版本。(这不是一件容易的事情,因为homebrew
不支持显式安装旧版本。(
然后我再次运行postinstall
,悬挂的符号链接再次出现。所以我认为它是在postinstall
期间创建的。我猜postinstall
计划先创建符号链接,然后再创建实际的文件。但实际的创建被不兼容的依赖关系打断了。移除它并重新运行postinstall
,我得到了
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
Referenced from: /usr/local/Cellar/php@5.6/5.6.40/bin/php
Reason: image not found
同样,这也是另一个不兼容的、旧的依赖关系。我失去了耐心,然后放弃了求助homebrew
。
实际上,您可以按照此步骤直接安装php的其他版本。