Вопрос или проблема
Ошибка CURL версия OPENSSL_1.0.1 ‘не найдена …’
В последние дни у меня возникла проблема с CURL. Я получаю следующую ошибку:
curl: /lib/i386-linux-gnu/libssl.so.1.0.0: версия `OPENSSL_1.0.1 'не найдена (необходима для /usr/lib/i386-linux-gnu/libcurl.so.4)
Я попробовал это:
php -i | grep curl :
PHP Warning: PHP Startup: Невозможно загрузить динамическую библиотеку '/usr/lib/php5/20090626+lfs/curl.so' - /lib/i386-linux-gnu/libssl.so.1.0.0: версия `OPENSSL_1.0.1 'не найдена (необходима для /usr/lib/i386-linux-gnu/libcurl.so.4) в Unknown on line 0
/etc/php5/cli/conf.d/curl.ini
либо :
apt-file search libssl.so.1.0.0
E: Кэш пуст. Вам нужно сначала выполнить 'apt-file update'.
и :
apt-file update :
curl: /lib/i386-linux-gnu/libssl.so.1.0.0: версия `OPENSSL_1.0.1' не найдена (необходима для /usr/lib/i386-linux-gnu/libcurl.so.4)
Загрузка с http://ppa.launchpad.net/yannubuntu/os-uninstaller/ubuntu/dists/precise/Contents-i386.gz не удалась
Команда завершилась с кодом
Поэтому я переустановил :
sudo apt-get install libssl-dev
sudo ln -s /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.1.0.1
sudo apt-get remove --purge curl php5-curl libssl-dev
sudo apt-get clean
sudo apt-get autoremove --purge
sudo apt-get install --reinstall libssl1.0.0
sudo apt-get install curl php5-curl
Та же проблема…. 🙁
И немного информации :
dpkg -l libcurl3
||/ Название Версия Описание
+++-=============================-===========================-================================
ii libcurl3 7.22.0-3ubuntu4 Библиотека многопротокольной передачи файлов (OpenSSL)
ls -l /usr/lib/php5/20090626+lfs/curl.so :
-rw-r--r-- 1 root root 71172 янв. 19 00:50 /usr/lib/php5/20090626+lfs/curl.so
cat /etc/php5/cli/conf.d/curl.ini :
; конфигурация для модуля php CURL
extension=curl.so
curl -V :
curl: /lib/i386-linux-gnu/libssl.so.1.0.0: версия `OPENSSL_1.0.1' не найдена (необходима для /usr/lib/i386-linux-gnu/libcurl.so.4)
apt-cache policy curl :
curl:
Установлено : 7.22.0-3ubuntu4
Кандидат : 7.22.0-3ubuntu4
Таблица версий :
*** 7.22.0-3ubuntu4 0
500 http://fr.archive.ubuntu.com/ubuntu/ precise/main i386 Packages
100 /var/lib/dpkg/status
7.21.6-3ubuntu3.2 0
-1 http://security.ubuntu.com/ubuntu/ oneiric-security/main i386 Packages
И, конечно, у меня снова проблема.
Команда ldd возвращает следующее :
ldd /usr/lib/i386-linux-gnu/libcurl.so.4
/usr/lib/i386-linux-gnu/libcurl.so.4: /lib/i386-linux-gnu/libssl.so.1.0.0: версия `OPENSSL_1.0.1' не найдена (необходима для /usr/lib/i386-linux-gnu/libcurl.so.4)
linux-gate.so.1 => (0xb77db000)
libidn.so.11 => /usr/lib/i386-linux-gnu/libidn.so.11 (0xb772c000)
liblber-2.4.so.2 => /usr/lib/i386-linux-gnu/liblber-2.4.so.2 (0xb771d000)
libldap_r-2.4.so.2 => /usr/lib/i386-linux-gnu/libldap_r-2.4.so.2 (0xb76ca000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb76c1000)
libgssapi_krb5.so.2 => /usr/lib/i386-linux-gnu/libgssapi_krb5.so.2 (0xb7683000)
libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb7636000)
libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb7492000)
librtmp.so.0 => /usr/lib/i386-linux-gnu/librtmp.so.0 (0xb7477000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7461000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb72b7000)
libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xb729f000)
libsasl2.so.2 => /usr/lib/i386-linux-gnu/libsasl2.so.2 (0xb7283000)
libgssapi.so.3 => /usr/lib/i386-linux-gnu/libgssapi.so.3 (0xb7245000)
libgnutls.so.26 => /usr/lib/i386-linux-gnu/libgnutls.so.26 (0xb7181000)
libgcrypt.so.11 => /lib/i386-linux-gnu/libgcrypt.so.11 (0xb70fc000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb70e1000)
libkrb5.so.3 => /usr/lib/i386-linux-gnu/libkrb5.so.3 (0xb7012000)
libk5crypto.so.3 => /usr/lib/i386-linux-gnu/libk5crypto.so.3 (0xb6fe9000)
libcom_err.so.2 => /lib/i386-linux-gnu/libcom_err.so.2 (0xb6fe4000)
libkrb5support.so.0 => /usr/lib/i386-linux-gnu/libkrb5support.so.0 (0xb6fdb000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb6fd6000)
/lib/ld-linux.so.2 (0xb77dc000)
libheimntlm.so.0 => /usr/lib/i386-linux-gnu/libheimntlm.so.0 (0xb6fce000)
libkrb5.so.26 => /usr/lib/i386-linux-gnu/libkrb5.so.26 (0xb6f4a000)
libasn1.so.8 => /usr/lib/i386-linux-gnu/libasn1.so.8 (0xb6ea5000)
libhcrypto.so.4 => /usr/lib/i386-linux-gnu/libhcrypto.so.4 (0xb6e70000)
libroken.so.18 => /usr/lib/i386-linux-gnu/libroken.so.18 (0xb6e5a000)
libtasn1.so.3 => /usr/lib/i386-linux-gnu/libtasn1.so.3 (0xb6e48000)
libp11-kit.so.0 => /usr/lib/i386-linux-gnu/libp11-kit.so.0 (0xb6e35000)
libgpg-error.so.0 => /lib/i386-linux-gnu/libgpg-error.so.0 (0xb6e30000)
libkeyutils.so.1 => /lib/i386-linux-gnu/libkeyutils.so.1 (0xb6e2c000)
libwind.so.0 => /usr/lib/i386-linux-gnu/libwind.so.0 (0xb6e03000)
libheimbase.so.1 => /usr/lib/i386-linux-gnu/libheimbase.so.1 (0xb6df4000)
libhx509.so.5 => /usr/lib/i386-linux-gnu/libhx509.so.5 (0xb6dac000)
libsqlite3.so.0 => /usr/lib/i386-linux-gnu/libsqlite3.so.0 (0xb6d07000)
libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0xb6cd6000)
И я добавил “echo” в конфигурационный файл + ldconfig : Ничего не произошло. У меня снова ошибка curl.
Символическая ссылка не работает :
sudo ln -s /usr/lib/libssl.so.1.0.0 /lib/i386-linux-gnu/libssl.so.1.0.0
ln: невозможно создать символическую ссылку «/lib/i386-linux-gnu/libssl.so.1.0.0»: Файл существует
Файл /lib/i386-linux-gnu/libssl.so.1.0.0 существует.
Похоже, ваш curl связан с библиотекой ssl, которую не удается найти в вашей системе. Если вы введете что-то вроде ldd /usr/lib/i386-linux-gnu/libcurl.so.4
, я думаю, что для libssl она покажет ‘не найдено’?
Это 64-битная система или 32-битная система? Если это 64-битная система, возможно, /usr/lib даже не просматривается для .so файлов. Чтобы исправить это, попробуйте следующее
echo "/usr/lib" > /etc/ld.so.conf.d/32bit_libs.conf
ldconfig
и затем снова попробуйте выполнить команду curl
В противном случае вы также можете попробовать это:
sudo ln -s /usr/lib/libssl.so.1.0.0 /lib/i386-linux-gnu/libssl.so.1.0.0
Потому что, похоже, именно там ld ищет библиотеки
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что библиотека libcurl.so.4
требует определённую версию библиотеки OpenSSL, а именно OPENSSL_1.0.1
, которая не была найдена на вашем системе. Эта проблема может возникнуть из-за несовместимости между установленными библиотеками, что принято при использовании программного обеспечения, зависящего от определенных библиотек.
Вот пошаговые рекомендации для решения этой проблемы:
-
Обновите список пакетов:
Сначала убедитесь, что ваш индекс пакетов актуален.sudo apt-get update
-
Проверьте установленные пакеты OpenSSL:
Убедитесь, что необходимые пакеты библиотеки OpenSSL установлены и актуальны.dpkg -l | grep libssl
-
Переустановите библиотеки OpenSSL и cURL:
Попробуйте переустановить библиотеки OpenSSL и cURL.sudo apt-get install --reinstall libssl1.0.0 libcurl3
-
Проверьте зависимости cURL:
Используйте командуldd
для проверки зависимостейlibcurl.so.4
. Это позволит вам выявить, активны ли все необходимые библиотеки:ldd /usr/lib/i386-linux-gnu/libcurl.so.4
-
Обновите библиотеки конфигурации в ld:
Если ваша система 64-разрядная, убедитесь, что 32-разрядные библиотеки ищутся в нужном пути. Создайте файл конфигурации и выполнитеldconfig
.echo "/usr/lib/i386-linux-gnu" | sudo tee /etc/ld.so.conf.d/i386_libs.conf sudo ldconfig
-
Создание символической ссылки:
Если ошибка всё еще остаётся, проверьте наличие символической ссылки на нужную библиотеку OpenSSL. Попробуйте следующую команду:sudo ln -sf /lib/i386-linux-gnu/libssl.so.1.0.0 /lib/i386-linux-gnu/libssl.so.1.0.1
Обратите внимание, что использование
-f
принудительно перезаписывает существующий файл. -
Очистите кеш:
Убедитесь, что временные данные удалены и нет конфликтов с кэшем:sudo apt-get clean sudo apt-get autoremove
-
Проверьте PHP и cURL:
Проверьте, загружен ли модуль cURL в PHP, выполнив:php -m | grep curl
- Перезагрузка:
Если ни одно из вышеуказанного не сработало, перезагрузите систему для применения всех изменений.
Если после выполнения всех шагов проблема все еще актуальна, возможно, потребуется исследовать конфликты между версиями библиотек, которые могут возникнуть из-за пользовательских установок, PPA или сторонних репозиториев. Убедитесь, что ваша система соответствует поддерживаемым версиям библиотек, указанным в документации вашего дистрибутива.