Вопрос или проблема
Я использую PHP 5.6. Я уже установил curl с помощью следующих команд:
sudo apt-get install php-curl
sudo apt-get install php5-curl
Но даже после этого я продолжаю получать ошибку:
Вызов неопределенной функции curl_init()
Тем не менее, когда я locate curl.ini
, он показывает следующее:
/etc/php5/apache2/conf.d/20-curl.ini
/etc/php5/cgi/conf.d/20-curl.ini
/etc/php5/cli/conf.d/20-curl.ini
/etc/php5/fpm/conf.d/20-curl.ini
/etc/php5/mods-available/curl.ini
/usr/share/php5/curl/curl.ini
/var/lib/ucf/cache/:etc:php5:mods-available:curl.ini
И когда я locate curl.so
, он показывает следующее:
/usr/lib/php5/20131226/curl.so
/usr/lib/x86_64-linux-gnu/libcurl.so.3
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0
Поэтому я изменил строку в /etc/php5/mods-available/curl.ini
с:
extension=curl.so
На:
extension=/usr/lib/php5/20131226/curl.so
Но я по-прежнему получаю ошибку.
В чем дело?
Попробуйте сделать эти две вещи:
sudo apt-get install php5.6-curl
Создайте страницу, чтобы показать вам <?php phpinfo();
и убедитесь, что вы используете php 5.6. У вас установлено несколько версий php? Как только вы выясните, какая именно версия у вас используется, установите curl для нее: apt-get install php<VERSION>-curl -y
Ответ или решение
Ошибка "Call to undefined function curl_init()" в PHP может возникнуть по ряду причин, даже если вы установили расширение cURL. Давайте рассмотрим возможные шаги для диагностики и решения этой проблемы.
Шаг 1: Убедитесь, что cURL действительно установлен
Вы уже выполнили команду установки sudo apt-get install php-curl
и sudo apt-get install php5-curl
. Тем не менее, чтобы убедиться, что расширение установлено корректно, выполните следующую команду:
sudo apt-get install php5.6-curl
Это важно, так как существует вероятность, что вы используете несколько версий PHP, и cURL может быть установлен только для одной из них.
Шаг 2: Проверьте активные модули PHP
После установки модуля cURL важно проверить, загружается ли он. Создайте файл info.php
в корневом каталоге вашего веб-сервера и вставьте в него следующий код:
<?php phpinfo(); ?>
Затем откройте этот файл в вашем веб-браузере (например, http://yourdomain.com/info.php
). Найдите раздел, связанный с cURL. Если его нет, значит, расширение не загружается. Это может быть вызвано проблемами в конфигурации.
Шаг 3: Проверка конфигурационных файлов
Убедитесь, что файл /etc/php5/mods-available/curl.ini
содержит строку:
extension=curl.so
Если вы изменили её на полный путь, это может привести к конфликтам. Поэтому верните исходное значение.
Шаг 4: Убедитесь, что правильно настроен веб-сервер
Если вы используете Apache, после внесения изменений в конфигурацию PHP перезапустите сервер для применения изменений:
sudo service apache2 restart
Для Nginx выполните:
sudo service nginx restart
Шаг 5: Проверка разных версий PHP
Возможно, у вас установлено несколько версий PHP, и ваш веб-сервер использует одну из них, в то время как команда CLI (интерфейс командной строки) обращается к другой. Выполните следующую команду, чтобы проверить версию PHP, используемую через терминал:
php -v
Сравните её с той, которую показывает phpinfo()
в вашем браузере. Если версии различаются, установите cURL для нужной версии с помощью команды:
sudo apt-get install php<VERSION>-curl -y
Заключение
После выполнения вышеописанных шагов ошибка "Call to undefined function curl_init()" должна исчезнуть, если cURL правильно установлен и загружается. Если проблема сохраняется, проверьте логи вашего веб-сервера на наличие дополнительных сообщений об ошибках, которые могут указать на источник проблемы.
Если потребуется дальнейшая помощь, не стесняйтесь обращаться. Успехов в решении проблемы!