如何讓我的 PHP 源安裝使用 /usr/local/programname/lib 或 /usr/local/lib 中的庫?
如何讓我的 PHP Source 安裝使用裡面的庫
/usr/local/programname/lib
代替或/usr/local/lib
?我嘗試將 LD_LIBRARY_PATH 設置為每個程序名稱,例如
LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib"
.而且,我退出了。甚至執行
source /etc/environment
(我已將 LD_LIBRARY_PATH 變數放在 /etc/environment 中),甚至重新啟動系統。但是,當我執行時
./configure --with-openssl --with-curl
,它告訴我 libssl 不存在。我不想使用apt提供的
libssl-dev
andlibcurl-dev
包,因為我需要最新版本來測試。而且,我注意到:如果我安裝程序的 lib 目錄
/usr/local/lib
而不是/usr/local/programname/lib
,它可以在不設置任何環境變數的情況下工作。但是,在我看來,
/usr/local/programname/lib
更清楚,所以我想使用這種類型的路徑。我怎樣才能使 PHP 使用裡面的庫
/usr/local/programname/lib
而不是/usr/local/lib
?我的意思是,我想/usr/local/programname/lib
比其他lib
目錄更優先。
programname
是指安裝在 中的每個程序的名稱/usr/local
。我什至嘗試使用(我在裡面
/etc/ld.so.conf.d/programname.conf
寫過),然後執行. 但仍然沒有運氣。/usr/local/programname``ldconfig
順便說一句,我使用的是 Ubuntu 20.10
編輯:
“不要與系統的約定作對” ——我不能就這樣繼續前進。我必須嘗試這樣做,否則我會被卡住,並且依賴於 apt 給我的有點舊的包(即使它給了我最新的包,我也不能,例如:使用 http/3 並對其進行測試和更多的..)。而且,將無法進行任何測試。我這樣做是為了讓我的程序經得起未來的考驗,甚至是為了享受這些試驗的樂趣。通過使用新程序進行測試。安裝
/usr/local
感覺不太好,因為我測試了多個版本的庫。就像我使用 OpenSSL 1.1.1i 和 OpenSSL 3.0.0 以及其他版本進行測試一樣。所以,安裝到 /usr/local 不會讓我受益,但安裝到/usr/local/openssl-1.1.1i
和/usr/local/openssl-3.0.0
會更乾淨,會節省我更多的時間。我不能每次都make install
繼續跑步。make uninstall
不僅是 OpenSSL,甚至是 cURL 和其他包。
我添加
PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"
了LD_LIBRARY_PATH
set to/usr/local/programname/lib
,它現在可以工作了。我的 PHP conf 現在使用我安裝在/usr/local/programname
.經過這麼多研究,這就是我想出的。但是,在我繼續檢查之前,我無法確認它是否適用於所有想要這樣做的人。
系統預設約定用於很多地方,以至於您通過使用不同的目錄為自己創造了巨大的成本。
最簡單的方法是使用 Docker 容器進行測試。這樣您就可以使用容器內的預設系統位置。