我刚刚将我的操作系统升级到 Mountain Lion,而 PECL 不再工作(它处于测试阶段,所以没有什么问题,但我想让它工作起来,这样我也可以升级我闪亮的新 SSD 上的操作系统)。
我正在使用本机 PHP 安装,没有 macports/homebrew 或类似的东西。
运行sudo pecl install uploadprogress
(例如)会产生以下终端输出:
downloading uploadprogress-1.0.3.1.tgz ...
Starting to download uploadprogress-1.0.3.1.tgz (9,040 bytes)
.....done: 9,040 bytes
4 source files, building
running: phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
autom4te: need GNU m4 1.4 or later: /usr/bin/m4
ERROR: `phpize' failed
我猜问题是 3grep
行。我发现几个帖子都说这是由于未安装 XCode 导致的...但是 XCode是安装并更新至最新版本 (4.4)。所有相关符号链接/Developer/usr/bin/*
也应存在。
m4 的当前版本为:m4 (GNU M4) 1.4.13
,因此即使上面的输出包含与其相关的行,我也不认为这可能是问题所在。
我确信这只是一个简单的问题,有人有什么线索吗?
答案1
尝试通过以下命令进行安装(相应地修改路径),例如:
M4=/Developer/usr/bin/m4 pecl install uploadprogress
答案2
结果发现只是一件简单得可笑的事情。
m4 现在位于 /usr/local/bin/m4,某个东西(可能是 autom4te?)正在 /usr/bin/m4 上寻找它。快速符号链接很好地解决了这个问题。
答案3
事实证明,您可能需要同意 M4 的 XCode 条款和条件。为此,请运行:
sudo m4 version
如果这是您升级后第一次运行它,系统将提示您阅读并同意条款和条件。此后,您可以通过重新运行之前所需的命令来使用它。
答案4
我花了很长时间,但我是这样解决的:
跑步:
which autom4te
给出的路径
autom4te
。在我的例子中,这是:/Applications/MAMP/Library/bin/autom4te
进入该路径,查看是否有程序
m4
如果是,则可能是已损坏。因此将其重命名:
mv m4 m4_old
现在检查你的新版本 m4 位于何处。因此运行:
which m4
它为您提供:/path/to/your/m4
现在在您的文件夹中找到
autom4te
指向原始路径的符号链接m4
,因此:ln -s /path/to/your/m4
现在它应该可以工作了,运行 pecl