Это моя конфигурация сервера:
У меня все работает и работает, за исключением тех случаев, когда я пытался загрузить модуль pecl_http
он дает мне следующее предупреждение и не загружается:
PHP Warning: PHP Startup: Unable to load dynamic library '/path/to/php/modules/http.so' - /path/to/php/modules/http.so: undefined symbol: php_persistent_handle_abandon in Unknown on line 0
Я старался смотреть повсюду, но без везения. Установка кажется прекрасной, но я не знаю, что с ней не так.
Я пришел сюда с той же проблемой – я не мог получить 2.0.4 для работы – в надежде помочь вам или другим, которые спотыкаются здесь, я приглашаю вас посмотреть мой ответ на serverfault здесь .
Для вашего удобства я также скопировал его ниже:
У меня не было проблемы с настройкой – по крайней мере, до моего сведения. Я запускаю nginx + php5-fpm. Мой файл php.ini был правильно настроен, и все мои другие расширения работали правильно – протестируйте его с помощью phpinfo () или php -ini.
Моя проблема с pecl_http (HttpRequest) была версией расширения (2.0.4). Проверьте свою версию, запустив в командной строке
pecl list
Мне не удалось заставить pecl_http-2.0.4 работать, но я смог запустить
pecl uninstall pecl_http
тогда
pecl install pecl_http-1.7.6
. Убедитесь, что у вас установлен libcurl, или вы можете столкнуться с ошибками установки.
После перезагрузки php5-fpm и моего веб-сервера (nginx) все работало префектно!
ДОПОЛНИТЕЛЬНАЯ ПОМОЩЬ:
Перед установкой – и груша установлена - вы можете запустить эти две команды, предположив, что используете php.ini в fpm – или вы можете написать путь в соответствии с вашей конфигурацией:
pear config-set php_ini /etc/php5/fpm/php.ini pecl config-set php_ini /etc/php5/fpm/php.ini
Это делает так, что pecl знает, какой файл php.ini вы используете с вашим веб-сервером, и добавит расширение = http.so в нужное место. Это помогло мне, возможно, это тоже поможет!
Поскольку версия 2 PECL HTTP требует, чтобы модули raphf и propro загружались до http. Поэтому отредактируйте свои php.ini или php.d / pecl_http.ini или загрузите модули, чтобы он выглядел так:
extension=raphf.so extension=propro.so extension=http.so
Источник: http://www.php.net/manual/en/http.install.php#113769
Когда дело доходит до установки из PECL или PEAR, я тоже, похоже, всегда сталкиваюсь с «чем-то», что мешает работе модуля как следует. Вышеприведенная ошибка на самом деле довольно распространена на Ubuntu & Debian.
Пакеты, предоставляемые Ubuntu & Debian, автоматически не устанавливают все зависимости, необходимые для каждого модуля, поэтому мне пришлось искать решение между StackExchange, Google и веб-сайтом разработчиков.
Что исправлено для меня (обратите внимание: на Debian , а не CentOS) была установка следующих пакетов:
php5-phpdbg php5-dev php-http zlib1g-dev libcurl4-openssl-dev libevent-dev imagemagick libmagick++-dev imagemagick-common libmagic-dev libghc-iconv-dev libpcre3-dev
Пакет, помеченный как только php-http, является намеренным. Этот конкретный пакет не имеет 5, поэтому, если вы не знаете, что вам нужно, вы, скорее всего, не заметите этого. Поэтому для тех, кто работает в системах Ubuntu и / или Debian, поиск на php5 и php (с использованием –names-only помогает сузить пакеты).
Я упоминаю об этом в надежде, что это поможет другим, которые могут иметь такую же проблему в подобной системе. Я не на 100% имен пакетов для репозитория CentOS, хотя имена пакетов, необходимых в целом, могут помочь вам и другим сузить список.
После установки пакетов просто удалите и переустановите пакет pecl_http, перезапустите php5-fpm и ошибка должна исчезнуть; подтверждается созданием файла phpinfo.
Я хотел бы расширить ответ Джека Миллера. Я использую OpenSUSE, и он добавляет расширение = ******. Поэтому загрузчики загружаются в /etc/php5/conf.d, разделенные на несколько файлов. Например:
ctype.ini debug.ini exif.ini http.ini imagick.ini mbstring.ini mysqli.ini opcache.ini pdo.ini pdo_sqlite.ini raphf.ini tokenizer.ini xmlreader.ini xsl.ini curl.ini dom.ini gd.ini iconv.ini json.ini memcache.ini mysql.ini openssl.ini pdo_mysql.ini propro.ini sqlite3.ini xdebug.ini xmlwriter.ini zlib.ini
Естественно, он загружает их один за другим с помощью glob, что означает, что они загружаются в алфавитном порядке, и вы догадались об этом – raphf.ini загружается после http.ini.
Переименование raphpf.ini что-то вроде a_raphf.ini делает трюк.