Установка альтернативного PHP Cache с использованием PECL и Fink

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

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

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

sudo pecl install apc

Как и другие сообщали о взаимосвязях, apc зависит от pcrePHP-совместимая библиотека регулярных выражений.

Теперь я установил последнюю версию 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. Где именно финк даже ставит pcre?

ОБНОВИТЬ

Я вижу этот вопрос относительно Macports:

sudo pecl установить ошибку apc на os x lion

В этом вопросе ответ включает в себя ссылки на pcre заголовки к их ожидаемому местоположению для PECL.

Я попробовал подобное решение. Для подхода fink команда symlink здесь выглядит так:

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/

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

ОЧЕНЬ ВАЖНОЕ ОБНОВЛЕНИЕ

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

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

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

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

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

Другие вопросы по тегам