1

我想在我的 Mac 上安装 Alternative PHP Cache (APC)。

使用 PECL,这应该是一个相当轻松的操作。

一个人需要做的就是:

sudo pecl install apc

正如其他人在互联网上报告的那样,apc依赖于pcrePHP 兼容的正则表达式库。

现在我已经使用 fink 安装了最新版本的 PHP 和 PEAR/PECL。我还pcre使用 fink 安装:

i   pcre                     8.21-2             Perl Compatible Regular Expressions Library

问题是,在尝试使用时sudo pecl install apcpecl正在检查pcre库的默认目录而不是查看/sw

cc -D_GNU_SOURCE -I. -I/private/tmp/pear/temp/APC -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-rootPtlYda/APC-3.1.13/include -I/private/tmp/pear/temp/pear-build-rootPtlYda/APC-3.1.13/main -I/private/tmp/pear/temp/APC -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/temp/APC/apc.c  -fno-common -DPIC -o .libs/apc.o
In file included from /private/tmp/pear/temp/APC/apc.c:45:
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found
#include "pcre.h"
         ^
1 error generated.
make: *** [apc.lo] Error 1
ERROR: `make' failed

因此我有两个问题:

  1. 我可以设置一个环境变量来指向 finkpcre库进行编译apc吗?
  2. 芬克到底在哪里pcre

更新

我看到这个关于 Macports 的问题:

sudo pecl 在 os x lion 上安装 apc 错误

在这个问题中,答案涉及将所需的pcre标头符号链接到 PECL 的预期位置。

我尝试了类似的解决方案。对于 fink 方法,这里的符号链接命令是:

sudo ln -s /sw/include/pcre.h /usr/include/

但这仍然没有奏效。通过PECL安装APC好像找不到这个头文件。

我应该补充一点,确实,pcre.h头文件位于/sw/include/pcre.h.

4

1 回答 1

1

我相信我找到了答案。

检查预期的文件pcre.h( /usr/include/php/ext/pcre/php_pcre.h:29) 我看到了这个:

#include "pcre.h"

也许有一种方法可以在 PECL 安装期间添加包含路径,但我不知道该怎么做。

然后我的解决方案是简单地将符号链接pcre.h放在包含这个有问题的源文件的目录中。像这样:

sudo ln -s /sw/include/pcre.h /usr/include/php/ext/pcre/

做到了。也许人们有一种更优雅的方式来做到这一点,但对于其他有这个问题的人来说,这应该可以完成工作。

非常重要的更新

实际上,我应该注意,我的上述信息不完整,不会起作用。

问题是,必须先安装 fink 包php5-dev

坦率地说,我认为php-pear应该将fink 包php5-dev作为依赖项。它没有,而且我目前不熟悉维护 fink 包,所以必须这样做。

没有这个包的后果只是编译时所需的头文件不适APC用于 fink 版本的 php。幸运或不幸的是,它们可用于包含 PHP 的 Mountaion Lion。这样做的后果是,虽然 APC 会编译,但它会链接到错误的 PHP 版本。

在按照安装结束的指示php.ini使用必要的更新后,将在他们的 apache 错误文件中找到以下消息。(对于 Fink,这是在):extension=apc.soapc/sw/var/log/apache2/error.log

PHP Startup: apc: Unable to initialize module\nModule compiled with module API=20090626\nPHP    compiled with module API=20100525

解决这个问题的方法是简单地sudo pecl uninstall apc然后做sudo fink install php5-dev,然后最后做sudo pecl install apc

最终安装apc将使用添加的包含文件php5-dev,一切都会好起来的。

然后你就可以放心地添加extension=apc.so/sw/etc/php5/apache2/php.ini.

还有一件事

另请注意,我上面关于符号链接pcre.h文件的说明必须稍微修改为:

sudo ln -s /sw/include/pcre.h /sw/include/php5/ext/pcre

pecl弄乱目录/usr而不是目录的事实/sw应该对我有所提示。

于 2013-04-26T17:07:50.350 回答