2013-04-26 3 views
1

Я хотел бы установить альтернативный кэш PHP (APC) на моем Mac.Установка альтернативного кэша PHP с использованием PECL и Fink

С PECL это, предположительно, довольно безболезненная операция.

Все, что нужно сделать, это:

sudo pecl install apc

Как уже сообщалось о межсетях, apc зависит от pcre, РНР совместимой библиотеке регулярных выражений.

Теперь я установил последнюю версию PHP и PEAR/PECL, используя fink. Я также установил pcre с помощью Fink:

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/

Но все же это не сработало. Установка APC через PECL, похоже, не может найти этот файл заголовка.

И я должен добавить, действительно, заголовочный файл 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/

Это сделал это. Возможно, у людей есть более элегантный способ сделать это, но для других с этой проблемой это должно выполнить свою работу.

ОЧЕНЬ ВАЖНО UPDATE

На самом деле, я должен отметить, что моя вышеуказанная информация является неполной и не будет работы.

Проблема заключается в том, что необходимо обязательно установить пакет fink php5-dev.

Откровенно говоря, я думаю, что пакет fink php-pear должен быть указан как php5-dev в качестве зависимости. Это не так, и я на данный момент не знаком с поддержкой пакетов fink, поэтому это нужно будет сделать.

Последствия не имея этот пакет просто, что необходимые заголовочные файлы, необходимые при составлении APC не доступны для Финк версии PHP. К счастью или к сожалению, они доступны для лидера Mountaion Lion, включая PHP. Последствия этого в том, что, хотя APC будет компилироваться, он будет связан с неправильной версией PHP.

После обновления их один php.ini с необходимой extension=apc.so, в соответствии с указаниями заключения установки apc следующее сообщение будет найдено в их апаче файл ошибки. (Для 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 будет включать файлы include, добавленные 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, должен был отключить меня.

 Смежные вопросы

  • Нет связанных вопросов^_^