2013-04-26 18 views
1

我想在我的Mac上安装替代PHP缓存(APC)。使用PECL和Fink安装替代PHP缓存

随着PECL这被认为是一个相当无痛的手术。

所有需要做的是:

sudo pecl install apc

正如其他人所报道的interwebs,apc取决于pcre,在PHP兼容的正则表达式库。

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

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

UPDATE

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

sudo pecl install apc error on os x lion

在这个问题上,答案涉及符号链接所需的pcre标题为PECL其预期的位置。

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

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

但还是这样没有工作。通过PECL安装APC似乎无法找到这个头文件。

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

回答

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

坦率地说,我认为fink包php-pear应该被设置为php5-dev作为依赖。它没有,而我目前对维护fink软件包并不熟悉,所以这将不得不做。

的后果有这个包很简单,就是在编译时APC所需要的必要的头文件不适用于PHP的芬克版本。幸运的是,不幸的是,它们可以用于包含PHP的Mountaion Lion。这样做的后果是,虽然APC将会编译,但它将与PHP的错误版本链接。

根据安装apc的结论指导,在更新php.ini后,必要的extension=apc.so更新后,会在其apache错误文件中找到以下消息。 (对于芬克这是在/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目录应该为我提供的东西。