使用PECL和Fink安装替代PHP缓存



我想在我的mac上安装替代PHP缓存(APC)。

对于PECL来说,这应该是一个相当无痛的手术。

所有人需要做的是:

sudo pecl install apc

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

现在我已经使用fink安装了最新版本的PHP和PEAR/PECL。我还安装了pcre使用fink:
i   pcre                     8.21-2             Perl Compatible Regular Expressions Library

问题是,当尝试使用sudo pecl install apc时,pecl正在检查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. 是否有一个环境变量,我可以设置指向fink pcre库编译apc ?
  2. fink到底把pcre放在哪里了?

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

sudo pecl install apc error on OS x lion

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

我尝试了一个类似的解决方案。对于fink方法,这里的symlink命令是:

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

但这仍然不起作用。通过PECL安装APC似乎无法找到这个头文件。

我应该补充,确实,pcre.h头文件在/sw/include/pcre.h中找到。

我相信我找到答案了

检查期待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。 坦率地说,我认为fink包php-pear应该把php5-dev作为一个依赖项。它没有,而且我目前对维护fink包不熟悉,所以这将不得不做。 没有的后果是编译APC所需的必要头文件在php的fink版本中不可用。幸运或不幸的是,它们可用于包含在mountain Lion中的PHP。这样做的结果是,尽管APC可以编译,但它会被链接到错误的PHP版本。

在用extension=apc.so更新php.ini之后,按照apc安装的结论,将在他们的apache错误文件中发现以下消息。(对于Fink,这是在/sw/var/log/apache2/error.log):

PHP Startup: apc: Unable to initialize modulenModule compiled with module API=20090626nPHP    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目录中混淆了东西,这应该给我提示。

相关内容

  • 没有找到相关文章

最新更新