PHP: модуль curl уже загружен

Я пытаюсь выполнить запрос curl POST в CLI, и он вызывает это исключение:

PHP Warning:  Module 'curl' already loaded in Unknown on line 0

Этот сценарий отлично работает в локальной среде (mac os), но когда я помещаю его в производство (ubuntu 16.04), он выдает это исключение.

Я использую версию PHP 5.6.

Вот метод PHP:

function post_request($url, $data){
    $fields_string =http_build_query($data);
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

Для информации мой метод используется в том же проекте (не в режиме cli) и работает как шарм. ошибка выкидывается только в режиме CLI.

когда я смотрю в /etc/php/5.6/php.ini, модуль curl загружается только один раз.

Любая идея ?

Вы можете найти там /etc/php/5.6/cli/conf.d/??-curl.ini (не уверен, что ?? всегда один и тот же, мой - 20-curl.ini). Если он есть, то здесь он загружает конфигурацию curl во второй раз.

Nigel Ren 02.05.2018 10:47

Введите php --ini, и он должен перечислить файлы, которые он загружает, и проверить наличие указанного выше файла.

Nigel Ren 02.05.2018 10:48

У меня есть этот с php --ini /etc/php/5.6/cli/conf.d/20-curl.ini. Я просто прокомментировал строку загрузки. У меня больше нет предупреждения, но мне интересно, не сломает ли это что-то еще?

Dany M 02.05.2018 15:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
473
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть 2 набора точек конфигурации, которые могут вызывать проблему. У вас есть php.ini, а затем у вас есть каталог файлов конфигурации - conf.d.

Ваш файл conf.d для curl (для php5.6 cli) - /etc/php/5.6/cli/conf.d/20-curl.ini.

Обоснование заключается в том, что каталог conf.d может быть связан так, чтобы все среды могли использовать одну и ту же конфигурацию, но ваш php.ini может содержать определенную конфигурацию для (например) версии PHP с интерфейсом командной строки.

Если вы хотите, чтобы curl был доступен и настроен одинаково во всех средах, лучше закомментировать любые части конфигурации в php.ini.

Я попробовал оба подхода и сохранил ваш, потому что хочу, чтобы curl был настроен одинаково.

Dany M 02.05.2018 18:47

Другие вопросы по теме