Php pecl_http загружен, но не определяет никаких функций - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь использовать функции http_build_str() и http_build_url(). Я уже установил и включил pecl_http, но все еще получаю эту ошибку:

Call to undefined function http_build_str()

Я проверил вниз и в сторону, что расширение установлено и включено. Я также уже сталкивался с предупреждениями, которые появляются, если их разрешения установлены неправильно, поэтому я могу исключить это.

Затем я наткнулся на extension_loaded () и get_extension_funcs () . Их результаты немного смущают:

print_r(extension_loaded('http')); // true
print_rt(get_extension_funcs('http')); // []

Выполняя проверку работоспособности, я запустил эти функции для другого расширения, которое, как я знаю, работает, и я получил некоторые результаты в массиве функций. Как вы можете ясно видеть, http_build_str и http_build_url не являются частью вывода get_extension_funcs(), как я и ожидал. Может ли кто-нибудь помочь, пожалуйста?

В случае, если это имеет значение, я устанавливаю это в Docker контейнере, и, как я думаю , соответствующие части его конфигурации следующие:

RUN apt-get update && apt-get install --no-install-recommends -y \
    git-core \
    build-essential \
    openssl \
    libssl-dev \
    libcurl4-openssl-dev

RUN docker-php-ext-install pdo_mysql mbstring exif zip pcntl ftp
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd
RUN pecl install propro raphf \
    && docker-php-ext-enable propro raphf \
    && rm -rf /tmp/pear
RUN pecl install pecl_http xdebug \
    && docker-php-ext-enable http xdebug \
    && rm -rf /tmp/pear

1 Ответ

0 голосов
/ 31 января 2020

Кажется, Php Мануэль немного устарел в этом. Не знаю, как я пропустил это, но этот вопрос является дубликатом http.so загружен, но http_get undefined .

Ссылка в комментарии, ответившая на это, мертва, официальные документы кажутся чтобы переехали. https://mdref.m6w6.name/http/QueryString

Кажется, что функциональность все еще там, только в виде нескольких классов вместо функций.

$params = ['test1'=>'val1','test2'=>'val2'];
$queryHandler = new QueryString($params);
$queryString = (string)$queryHandler;
print_r($queryString); // test1=val1&test2=val2
...