Я пытаюсь выполнить запрос 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 загружается только один раз.
Любая идея ?
Введите php --ini
, и он должен перечислить файлы, которые он загружает, и проверить наличие указанного выше файла.
У меня есть этот с php --ini /etc/php/5.6/cli/conf.d/20-curl.ini
. Я просто прокомментировал строку загрузки. У меня больше нет предупреждения, но мне интересно, не сломает ли это что-то еще?
Есть 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 был настроен одинаково.
Вы можете найти там /etc/php/5.6/cli/conf.d/??-curl.ini (не уверен, что ?? всегда один и тот же, мой - 20-curl.ini). Если он есть, то здесь он загружает конфигурацию curl во второй раз.