在Mac OS Lion上,尝试使用PECL安装OAUTH时遇到问题

27

我是php服务器的新手,尝试了其他相关帖子,似乎没有人遇到和我一样的错误。 我正在使用MAMP 2.0.2,并运行PHP 5.3.6, 我试图在本地MAMP上安装oAuth,使用以下命令:

$ cd /Applications/MAMP/bin/php/php5.3.6/bin
$ ./pecl install oauth

然而,它返回了这样的错误:

Notice: unserialize(): Error at offset 276 of 1133 bytes in Config.php on line 1050
ERROR: The default config file is not a valid config file or is corrupted.

发生了什么事?PECL已经预装在MAMP中,应该可以直接使用……

更新:

我在其他地方阅读到一个帖子,建议检查配置文件中保存安装路径的数据是否正确,因此我更改了以下文件中的某些值:

/Applications/MAMP/bin/php/php5.3.6/conf/pear.conf

然后,我使用以下命令:

$ ./pecl install oauth

它开始下载和解压缩,但尝试安装时会出现以下错误:

creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/sh /private/tmp/pear/temp/pear-build-user1RU5EZA/oauth-1.2.2/libtool --mode=compile cc  -I. -I/private/tmp/pear/temp/oauth -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-user1RU5EZA/oauth-1.2.2/include -I/private/tmp/pear/temp/pear-build-user1RU5EZA/oauth-1.2.2/main -I/private/tmp/pear/temp/oauth -I/Applications/MAMP/bin/php/php5.3.6/include/php -I/Applications/MAMP/bin/php/php5.3.6/include/php/main -I/Applications/MAMP/bin/php/php5.3.6/include/php/TSRM -I/Applications/MAMP/bin/php/php5.3.6/include/php/Zend -I/Applications/MAMP/bin/php/php5.3.6/include/php/ext -I/Applications/MAMP/bin/php/php5.3.6/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2 -Wall -g   -c /private/tmp/pear/temp/oauth/oauth.c -o oauth.lo
mkdir .libs
cc -I. -I/private/tmp/pear/temp/oauth -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-user1RU5EZA/oauth-1.2.2/include -I/private/tmp/pear/temp/pear-build-user1RU5EZA/oauth-1.2.2/main -I/private/tmp/pear/temp/oauth -I/Applications/MAMP/bin/php/php5.3.6/include/php -I/Applications/MAMP/bin/php/php5.3.6/include/php/main -I/Applications/MAMP/bin/php/php5.3.6/include/php/TSRM -I/Applications/MAMP/bin/php/php5.3.6/include/php/Zend -I/Applications/MAMP/bin/php/php5.3.6/include/php/ext -I/Applications/MAMP/bin/php/php5.3.6/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -Wall -g -c /private/tmp/pear/temp/oauth/oauth.c  -fno-common -DPIC -o .libs/oauth.o
In file included from /private/tmp/pear/temp/oauth/oauth.c:14:
/private/tmp/pear/temp/oauth/php_oauth.h:20:10: 

fatal error: 'php.h' file not found

include "php.h"
     ^

1 error generated.

make: *** [oauth.lo] Error 1

ERROR: `make' failed

再说一遍,发生了什么?

4个回答

66

我知道这是一个老问题,但我在遇到类似问题时发现了这个问题。

MAMP未附带一些PHP源代码

  • 下载MAMP组件并配置
  • URL:http://www.mamp.info/en/downloads/index.html(例如MAMP_components_2.0.2.zip)
  • 解压缩MAMP_components_2.0.2.zip文件
  • 找到您的php-5.x.x.tar.gz文件(其中5.x.x是您的PHP版本)
  • 如果使用的是php>5.4.10,则从http://php.net/releases下载源文件,因为它们不在MAMP组件下载中(评论中的pulkitsinghal给予信誉)
  • 创建包含PHP源代码的目录:

    mkdir -vp /Applications/MAMP/bin/php5/include

  • 将php-5.x.x.tar.gz解压缩到/Applications/MAMP/bin/php/php5.*/include或/Applications/MAMP/bin/php5/ include中:

    tar zxvf php-5.x.x.tar.gz -C /Applications/MAMP/bin/php/php5.?.??/include

  • 将您的php-5.x.x目录重命名为php(不带版本编号):

    mv /Applications/MAMP/bin/php/php5.2.17/include/php-5.?.?? /Applications/ MAMP/bin/php/php5.2.17/include/php

  • 配置PHP源代码(它将创建必要的文件,例如zend_config.h、tsrm_config.h等):

    cd /Applications/MAMP/bin/php/php5.?.??/include/php

    ./configure

这个过程是为了另一个修复,但这解决了找不到php.h的问题。

感谢提供答案的来源:

Thomas Hunter博客

Google文档详细说明过程


2
非常感谢 - 我使用这个来安装 PHP 5.4.4 的 MongoDB 驱动程序。 - monofonik
3
如果你遇到以下错误信息:/Applications/MAMP/bin/php/php5.4.4/include/php/Zend/zend.h:51:11: fatal error: 'zend_config.h' file not found,请确保你已经配置了 PHP 源代码。也就是说,在你复制所有文件的目录中运行 ./configure 命令。 - greg
我现在正在使用MAMP 2.2,那我从哪里获取component.zip文件呢? - GusDeCooL
3
唯一的调整是MAMP_components_2.1.2没有php5.5.3的压缩包,因此必须从http://www.php.net/releases/获取。 - pulkitsinghal
1
非常感谢你,你救了我的命。我使用这个结构来安装Mongo驱动程序和PHP 5.5.26。 - AliRNazari
显示剩余3条评论

30

我在尝试使用MAMP安装pecl install -f ssh2时遇到了同样的问题。

这是我如何解决它的:

  1. MAMP没有为PHP 5.4.10提供源代码存档,因此请从php.net下载它
  2. 将源代码存档解压缩到/Applications/MAMP/bin/php/php5.4.10/include/php
  3. 运行./configure来配置适合您平台的源代码(如果没有这一步骤,pecl安装将失败并寻找一些头文件)
  4. 重试您的pecl安装

(非常感谢 Stephen 的答案,基本上是一样的)


6
这是简单的答案。需要注意的一点是:将未压缩的PHP 5.4.10文件夹放入“/include”目录后,将其重命名为php,我对这一步感到困惑。 - Victor S
1
这个答案应该被接受,它修复了问题,解释清晰,我猜它会长期有效。不像得票最多的那个。 - TCB13
但是在终端中运行这些命令不会影响MAMP安装,而是系统PHP的安装,这似乎对我没有帮助。 - zkent

6
这是对Stephen的回答和Greg的评论的补充。在OSX 10.10.2上为php 5.6.2编译xdebug 2.3.2时,我无法摆脱“'zend_config.h'文件找不到”的错误,直到我在php文件夹中的./configure中添加了以下选项: ./configure --without-iconv 感谢Cameron Browning的贡献

1
PECL模块是编译模块,为了安装它们,您需要PHP头文件。您可以在php.net/downloads.php找到这些头文件,请确保下载与您的PHP版本相匹配的版本。然后您可以按照以下步骤进行操作:在MAMP环境中安装PHP OAuth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接