Текущая версия http
расширения (в package имя является pecl_http
) не обеспечивает http_get()
функцию. Эта функция была удалена в версии 2.0.0 (сразу после версии 1.7.6). Вы можете увидеть его, выполнив следующие команды в терминале:
git clone https://github.com/m6w6/ext-http.git
cd ext-http
git diff RELEASE_1_7_6 RELEASE_2_0_0
Хотя не упоминается явно в changelog, процедурный стиль полностью заменяется стиле ООП во втором варианте.
documentation on PHP's official site является устаревшим. Автор расширения разместил новую версию на his own site. Я бы не стал его сильно обвинять, поскольку ссылка на документацию на PECL site указывает на нужное место. Несомненно, он должен удалить старую документацию от php.net/manual
или хотя бы обновить ее.
Новый способ выполнения HTTP GET запросов подразумевает использование http\Client\Request
класса:
$request = new http\Client\Request("GET",
"http://example.com",
["User-Agent"=>"MyAgent/0.1"]
);
$request->setOptions(["timeout" => 1]);
$client = new http\Client;
$client->enqueue($request)->send();
$response = $client->getResponse();
Относно установки
Вы должны загрузить зависимости перед темhttp.so
, как это рекомендуется в documentation:
; obligatory deps
extension = raphf.so
extension = propro.so
; if shared deps were enabled
extension = hash.so
extension = iconv.so
extension = json.so
; finally load pecl/http
extension = http.so
Если вы еще не включили '; extension = php_http.dll' в свой файл' php.ini'. Просто удалите точки с запятой и после этого перезапустите Apache Server. –