publickey permission mac generate create php git github ssh openssl

php - permission - git ssh windows



"Libcrypto.so.1.0.0: versiĆ³n ''OPENSSL_1.0.1'' no encontrado" durante shell_exec (1)

Me encuentro con un problema extraño en PHP usando shell_exec para ejecutar comandos git. Esta es una nueva imagen de Ubuntu 16.x LTS con solo una copia de Lampp instalada y los paquetes de git. Dentro de un script php al que pretendo webhook, ejecutar shell_exec(''/usr/bin/git pull 2>&1'') imprime el siguiente error.

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.`

Puedo extraer el repositorio usando git pull desde la línea de comandos y que el usuario que ejecuta apache tiene la propiedad de todos los archivos en el directorio htdocs.

openssl version -a produce lo siguiente:

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"

¿Es esto un problema con el Lamp 5.6.21, o es esto un problema con mi configuración?


Entonces tienes XAMPP instalado en /opt/lampp e intentando ejecutar git nativo (como viene de Ubuntu, no de XAMPP) a través de shell_exec() . ¿Cuál es el entorno en el que se ejecuta este shell? Es el entorno que utiliza XAMPP con LD_LIBRARY_PATH set /opt/lampp/lib , que es absolutamente necesario para todos los componentes de XAMPP (porque están diseñados para usar estas bibliotecas de /opt/lampp/lib ). Entonces git hereda este mismo entorno y (aunque tiene una biblioteca openssl perfecta de Ubuntu en algún lugar de /lib/x86_64-linux-gnu ) intenta usar librerías de /opt/lampp/lib , bang.

Lo que necesita es borrar la LD_LIBRARY_PATH entorno LD_LIBRARY_PATH antes de la invocación de git, como:

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