Установка альтернативного PHP Cache с использованием PECL и Fink
Я хотел бы установить альтернативный кэш PHP (APC) на моем Mac.
С PECL это, предположительно, довольно безболезненная операция.
Все, что нужно сделать, это:
sudo pecl install apc
Как и другие сообщали о взаимосвязях, apc
зависит от pcre
PHP-совместимая библиотека регулярных выражений.
Теперь я установил последнюю версию 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
Отсюда у меня два вопроса:
- Есть ли переменная окружения, которую я могу установить, чтобы указать на fink
pcre
библиотеки для компиляцииapc
? - Где именно финк даже ставит
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
каталог должен был дать чаевые для меня.