Php

如何讓我的 PHP 源安裝使用 /usr/local/programname/lib 或 /usr/local/lib 中的庫?

  • January 13, 2021

如何讓我的 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-devandlibcurl-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_PATHset to /usr/local/programname/lib,它現在可以工作了。我的 PHP conf 現在使用我安裝在/usr/local/programname.

經過這麼多研究,這就是我想出的。但是,在我繼續檢查之前,我無法確認它是否適用於所有想要這樣做的人。

系統預設約定用於很多地方,以至於您通過使用不同的目錄為自己創造了巨大的成本。

最簡單的方法是使用 Docker 容器進行測試。這樣您就可以使用容器內的預設系統位置。

引用自:https://serverfault.com/questions/1049636