使用PECL和Fink安装备用PHP缓存

时间:2013-04-26 17:00:33

标签: php header-files apc pecl fink

我想在我的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

因此我有两个问题:

  1. 是否有环境变量我可以设置为指向fink pcre库以进行编译apc
  2. 即使把pcre
  3. 放在哪里也是fink

    更新

    我看到有关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}}头文件。

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目录中的内容这一事实应该会让我感到厌烦。