Я установил PHP pecl_http
расширение с помощью Amazon Linux php54-pecl-http
Пакет Yum.
php -i
показывает http.ini
файл загруженhttp.ini
имеет extension=http.so
линия в немphp -m
показывает модуль HTTP как установленныйpecl list
показывает pecl_http 2.0.0beta1
как установлено.Однако, когда я пытаюсь использовать любую из его функций - new HttpRequest()
, http_build_url()
и т.д. - они возвращаются как несуществующие. Я запускаю все через CLI (это служебный сервер), поэтому нет шансов php.ini
файлы между средами.
php -i
В блоке http говорится:
http
HTTP Support => enabled
Extension Version => 2.0.0beta1
Used Library => Compiled => Linked
libz => 1.2.5 => 1.2.5
libcurl => 7.24.0 => 7.24.0
libevent => 1.4 or greater => 2.0.18-stable
libserf => disabled => disabled
Persistent Handles
Provider => Ident => Used => Free
http_client.curl => N/A => 0 => 0
http_client_pool.curl => N/A => 0 => 0
http_client_datashare.curl => N/A => 0 => 0
Directive => Local Value => Master Value
http.etag.mode => crc32b => crc32b
http.persistent_handle.limit => -1 => -1
Кто-нибудь испытал это? Любые идеи?
Возможно, немного поздно, но, возможно, это поможет кому-то другому приземлиться здесь ...
Убедитесь, что вы ссылаетесь на правильную версию API pecl_http. В v2 они переместились в пространства имен, поэтому соглашение о вызовах совершенно иное. Большая часть документации в Интернете ссылается на методы версии v1.
Пожалуйста попробуйте
strace -fF -o /tmp/wtf php your_php_script.php
А потом прочесать /tmp/wtf
файл с вариантом текстового редактора / просмотра / grep по вашему выбору, чтобы увидеть 1) правильный php.ini был прочитан и 2) если расширение http.so было действительно загружено.