我想在我的mac上安装另一种PHP缓存(APC)。
对于PECL来说,这应该是一个相当无痛的手术。
我们所需要做的就是:
sudo pecl install apc
正如其他人所报告的那样,apc依赖于pcre,这是与pcre兼容的正则表达式库。
现在,我已经使用fink安装了PHP和PEAR/PECL的最新版本。我还使用fink安装了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因此,我有两个问题:
pcre的fink apc库?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中找到。
发布于 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):
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目录,这一事实应该已经为我提供了提示。
https://stackoverflow.com/questions/16241614
复制相似问题