2013-04-26 16 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目錄應該爲我提供的東西。