我想在我的mac上安装Alternative PHP Cache(APC)。
PECL可能是一次相当轻松的操作。
所有人需要做的是:
sudo pecl install apc
正如其他人报道的那样,apc
依赖于pcre
,PHP兼容的正则表达式库。
现在我已经使用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
库以进行编译apc
?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
中的{{1}}头文件。
答案 0 :(得分: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
应该以{{1}}作为依赖。它没有,而且我目前对维护fink软件包不熟悉,所以这将是必须的。
拥有此软件包的不的后果仅仅是编译php5-dev
时所需的必需头文件不适用于fink版本的php。幸运或遗憾的是,它们适用于包含PHP的Mountaion Lion。这样做的后果是,尽管APC将编译,但它将与错误版本的PHP链接。
根据APC
安装的结果,在使用必需php.ini
更新其extension=apc.so
后,将在其apache错误文件中找到以下消息。 (对于Fink,这是apc
):
/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
目录中的内容这一事实应该会让我感到厌烦。