«Libcrypto.so.1.0.0: версия« OPENSSL_1.0.1 »не найдена» во время shell_exec

Я сталкиваюсь с какой-то странной проблемой в PHP, используя shell_exec для запуска команд git. Это совершенно новый образ Ubuntu 16.x LTS, на котором установлена ​​только копия Lampp и пакеты git. Внутри php-скрипта, к которому я собираюсь подключиться, запустивshell_exec('/usr/bin/git pull 2>&1') распечатывает следующую ошибку.

ssh: /opt/lampp/lib/libcrypto.so.1.0.0: version 'OPENSSL_1.0.1' not found (required by ssh)
fatal: Could not read from remote repository.`

Я могу вытащить хранилище, используяgit pull из командной строки и о том, что пользователь, использующий apache, владеет всеми файлами в каталоге htdocs.

openssl version -a результаты в следующем:

OpenSSL 1.0.2g-fips  1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security
-Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall
-DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5
-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM
-DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"

Это проблема с Лампой 5.6.21, или это проблема с моей настройкой?

 jww14 июн. 2016 г., 12:58
Типopenssl version -a в командной строке. Это OpenSSL 1.0.1 или 1.0.2? (Похоже, ваше удаленное хранилище поставляет двоичные файлы, созданные на основе 1.0.1).
 jww15 июн. 2016 г., 08:38
@Sidriel - возможно, вам хватит: (1) скачать / собрать OpenSSL 1.0.1. (2) установить на/opt/openssl-1.0.1, (3) сделать скрипт для запуска PHP и использовать что-то вродеLD_LIBRARY_PATH="/opt/openssl-1.0.1/lib:$LD_LIBRARY_PATH" /opt/lampp/bin/php.
 Sidriel14 июн. 2016 г., 14:50
Я добавил вывод команды, похоже, это версия 1.0.2, необходимо ли понижение версии?
 Robbie Averill14 июн. 2016 г., 05:16
Похоже, у вас нетopenssl устанавливается из командной строки

Ответы на вопрос(1)

/opt/lampp и пытается запустить нативный (как в случае с Ubuntu, а не XAMPP) git черезshell_exec(), В какой среде работает эта оболочка? Это среда, с которой XAMPP используетLD_LIBRARY_PATH задавать/opt/lampp/lib, который абсолютно необходим для всех компонентов XAMPP (потому что они созданы для использования этих библиотек из/opt/lampp/lib). Затем git наследует ту же самую среду и (хотя она имеет идеальную библиотеку openssl из Ubuntu где-то в/lib/x86_64-linux-gnu) пытается использовать библиотеки из/opt/lampp/libвзрыва

Что вам нужно, это просто очиститьLD_LIBRARY_PATH переменная окружения перед вызовом git, например:

$oldldpath = getenv('LD_LIBRARY_PATH');
putenv("LD_LIBRARY_PATH=");
shell_exec('/usr/bin/git pull 2>&1');
putenv("LD_LIBRARY_PATH=$oldldpath");

Ваш ответ на вопрос