2016-06-14 22 views
1

Я запускаю немного странную проблему в PHP, используя shell_exec для запуска git-команд. Это новый образ Ubuntu 16.x LTS с установленной только копией Lampp и пакетами git. Внутри php-скрипта, который я намереваюсь использовать для webhook, запуск shell_exec('/usr/bin/git pull 2>&1') выдает следующую ошибку.«libcrypto.so.1.0.0: version» OPENSSL_1.0.1 «не найден» во время shell_exec

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 из командной строки, и пользователь работает апач имеет право собственности на все файлы в каталоге 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, или это проблема с моей установки?

+0

Похоже, у вас нет 'openssl' установлен из командной строки –

+1

Типа' OpenSSL версии -a' на командной строки. Это OpenSSL 1.0.1 или 1.0.2? (Похоже, что ваш удаленный репо обеспечивает двоичные файлы, созданные против 1.0.1). – jww

+0

Я добавил вывод команды, похоже, что это версия 1.0.2, требуется понижение? – Sidriel

ответ

1

Итак, у вас есть XAMPP, установленный в /opt/lampp и пытающийся запустить native (как в случае с 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, bang.

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

$oldldpath = getenv('LD_LIBRARY_PATH'); 
putenv("LD_LIBRARY_PATH="); 
shell_exec('/usr/bin/git pull 2>&1'); 
putenv("LD_LIBRARY_PATH=$oldldpath"); 
Смежные вопросы