首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PECL和Fink安装替代PHP缓存

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

Stack Overflow用户
提问于 2013-04-26 17:00:33
回答 1查看 2.6K关注 0票数 1

我想在我的mac上安装另一种PHP缓存(APC)。

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

我们所需要做的就是:

sudo pecl install apc

正如其他人所报告的那样,apc依赖于pcre,这是与pcre兼容的正则表达式库。

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

代码语言:javascript
复制
i   pcre                     8.21-2             Perl Compatible Regular Expressions Library

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

代码语言:javascript
复制
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. 是否有环境变量可以设置为指向用于编译pcre的fink apc库?
  2. 芬克到底把pcre放在哪里?

更新

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

sudo pecl install apc error on os x lion

在这个问题中,答案包括将所需的pcre头与它们期望的PECL位置进行符号化。

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

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

但这还是行不通的。通过PECL安装APC似乎无法找到这个头文件。

我应该添加,实际上,pcre.h头文件可以在/sw/include/pcre.h中找到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-26 17:07:50

我相信我找到了答案。

检查期望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时所需的必要头文件无法用于APC版本的APC。幸运的是,或者不幸的是,它们可以用于安装Lion,包括PHP。这样做的后果是,虽然APC将编译,但它将与错误的PHP版本链接。

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

代码语言:javascript
复制
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目录,这一事实应该已经为我提供了提示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16241614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档