2016-06-14 6 views
1

Ich bin in ein bisschen ein seltsames Problem in PHP mit Shell_Exec laufen git-Befehle ausführen. Dies ist ein brandneues Bild von Ubuntu 16.x LTS mit nur einer Kopie von Lampp und den Git-Paketen. Innerhalb eines PHP-Skripts, zu dem ich gehoehen möchte, gibt shell_exec('/usr/bin/git pull 2>&1') den folgenden Fehler aus."libcrypto.so.1.0.0: Version 'OPENSSL_1.0.1' nicht gefunden" während 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.` 

ich das Repository git pull aus der Befehlszeile und dass der Benutzer läuft Apache hat das Eigentum an allen Dateien im htdocs Verzeichnis ziehen kann.

openssl version -a Ergebnisse in dem folgenden:

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" 

Ist das ein Problem mit der Lampe 5.6.21, oder ist dies ein Problem mit meinem Setup?

+0

Klingt wie Sie haben nicht 'openssl' von der Kommandozeile –

+1

Typ installiert' openssl Version -a' auf die Befehlszeile. Ist es OpenSSL 1.0.1 oder 1.0.2? (Es sieht so aus, als ob Ihr Remote Repo Binaries liefert, die gegen 1.0.1 gebaut wurden). – jww

+0

Ich habe die Ausgabe des Befehls hinzugefügt, es sieht so aus, als ob es Version 1.0.2 ist, ist Downgrade notwendig? – Sidriel

Antwort

1

So haben Sie XAMPP in /opt/lampp installiert und versuchen, native (wie aus Ubuntu, nicht XAMPP) git über shell_exec(). In welcher Umgebung läuft diese Shell? Es ist die Umgebung, die XAMPP mit LD_LIBRARY_PATH set /opt/lampp/lib verwendet, die für alle XAMPP-Komponenten unbedingt erforderlich ist (da sie für die Verwendung dieser Bibliotheken aus /opt/lampp/lib erstellt wurden). Dann erbt git diese selbe Umgebung und (obwohl es eine perfekte openssl-Bibliothek von Ubuntu irgendwo in /lib/x86_64-linux-gnu hat) versucht, Bibliotheken von /opt/lampp/lib, bang zu verwenden.

Was brauchen Sie sich nur LD_LIBRARY_PATH Umgebungsvariable vor dem Löschen Aufruf git, wie:

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