2016-06-14 30 views
1

我在使用shell_exec運行git命令時遇到了一個奇怪的問題。這是Ubuntu 16.x LTS的全新映像,僅安裝了Lampp副本和git軟件包。在我打算webhook的php腳本中,運行shell_exec('/usr/bin/git pull 2>&1')會打印出以下錯誤。「libcrypto.so.1.0.0:version'OPENSSL_1.0.1'not found」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在命令行和用戶運行的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的問題,或者這是一個問題,我的設置?

+0

聽起來像是你沒有'命令行 –

+1

類型安裝openssl''OpenSSL的版本命令行。是OpenSSL 1.0.1還是1.0.2? (這聽起來像你的遠程回購是提供對1.0.1構建的二進制文件)。 – jww

+0

我已經添加了命令的輸出,它看起來像版本1.0.2,是降級必要的? – Sidriel

回答

1

因此,您已將XAMPP安裝到/opt/lampp並嘗試通過shell_exec()運行本機(如來自Ubuntu,而不是XAMPP)git。這個shell運行的環境是什麼?這是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環境變量與git調用,就像之前:-a`上

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