Я пытаюсь установить pecl_http как расширение для php.
phpise работает нормально, так как я получаю файл конфигурации. Когда я иду к типу ./configure, я получаю следующее сообщение об ошибке;
...
checking openssl/crypto.h usability... yes
checking openssl/crypto.h presence... yes
checking for openssl/crypto.h... yes
checking for gnutls support in libcurl... no
checking for ares support in libcurl... no
checking for bundled SSL CA info... /etc/ssl/certs/ca-certificates.crt
checking for event2/event.h... found in /usr
checking for libevent version, roughly... 2.0.19-stable
checking for ext/raphf support... no
configure: error: Please install pecl/raphf and activate extension=raphf.so in your php.ini
Я добавил следующую строку в мой файл php.ini
extension=raphf.so
Я знаю, что raphf установлен и загружается, так как я проверил его следующим php:
echo extension_loaded(raphf) ? "raphf loaded" : "raphf not loaded";
Который возвращается, загружен.
Почему ./configure не видит raphf?
В случае, если кто-то все еще заинтересован в том, как решить эту проблему, я просто придумаю решение. Сценарий конфигурации pecl_http ищет включаемый модуль не для модуля apache php, а для интерфейса командной строки php. Если вы запустите php -m, вы увидите, что ни raphf, ни propro не включены. Чтобы CLI включил эти модули, вы должны добавить:
extension=raphf.so
extension=propro.so
Также в /etc/php5/cli/php.ini, поскольку это файл инициализации, который запускается php CLI при запуске. После этого вы решите проблему.
У меня была та же самая проблема, но решение, предоставленное Dechcaudron, не решило проблему. Также нет ответов отсюда: Ubuntu pecl установить pecl_http не удалось
я узнал что php-config --php-binary
возвращается NONE
вместо двоичного файла php. Поскольку скрипт configure использует эту команду для получения двоичного файла php, а затем вызывает $PHP_EXECUTABLE -m | $EGREP ^raphf$
это думает raphf
еще не загружен Решением было манипулировать скриптом configure, чтобы он использовал правильный двоичный файл для php.
~# pecl download pecl_http
~# tar -xf pecl_http-2.5.3.tgz
~# cd pecl_http-2.5.3
~/pecl_http-2.5.3# phpize --clean
~/pecl_http-2.5.3# phpize
~/pecl_http-2.5.3# sed "s/^PHP_EXECUTABLE=.*$/PHP_EXECUTABLE=\"\/usr\/bin\/php\"/g" -i configure
~/pecl_http-2.5.3# ./configure
~/pecl_http-2.5.3# make
~/pecl_http-2.5.3# make install
Затем добавьте extension=http.so
на ваш php.ini для apache2 и cli и все готово.
Подсказка: Обычно вы можете найти правильный путь для вашего бинарника php с which php
,
Последние несколько месяцев я ломал голову над этой проблемой. Решением этой проблемы может быть просто удаление модуля. По какой-то причине pecl все еще думает, что модуль установлен, хотя на самом деле это не так.
Таким образом, моя работа заключалась в том, чтобы проверить, считает ли pecl, что он установлен, с помощью pecl list
, Если это перечисляет это, тогда удалите модуль с pecl uninstall [modulename]
, Как только я удалил его, я наконец смог установить raphf.