首頁 > 後端開發 > php教程 > 如何從源安裝PHP擴展

如何從源安裝PHP擴展

Joseph Gordon-Levitt
發布: 2025-02-20 09:38:09
原創
404 人瀏覽過

如何從源安裝PHP擴展

有時,在安裝PHP之前,很難知道您需要哪些PHP擴展。如果您以後需要添加擴展名,則可能會很幸運,並且擴展程序可能位於所使用的操作系統的存儲庫中。這可能只是一個簡單的sudo apt-get安裝php5-intl。但是,在其他情況下,您可能需要從Source安裝它 - Phalcon就是一種情況,但是通過引入供應商支持,快捷方式和預編寫的說明,該過程使您的操作系統非常簡單。但是,如果其他擴展程序沒有這樣的東西?

> 在本教程中,我們將在Linux Systems上安裝一些自定義擴展(OS X - 過程幾乎相同)。該過程與我們已經在Nitrous.io上所做的非常相似,但適用於本地環境 - 更具體地說,是Laravel Homestead。您可以輕鬆地從本教程得出安裝說明,並將其應用於其他發行版。

鑰匙要點

>從源安裝PHP擴展名需要PHP開發工具和計算機上安裝的編譯器,以及PHP源代碼和擴展的源代碼。
    >從源安裝PHP擴展的過程涉及多個步驟:下載源代碼,準備使用PHPIZE編譯的擴展程序文件夾,配置編譯環境,將源編譯到.SO文件中,然後將此文件移動到該文件中當前的PHP安裝的擴展文件夾。
  • 安裝後,需要通過將其添加到php.ini文件中或為文件夾中的每個擴展程序創建一個單獨的INI文件來啟用PHP擴展,該文件夾加載了Php.ini後自動包含。
  • 要刪除擴展,您可以使用php5dismod工具,手動刪除符號鏈接或從php.ini文件中刪除啟用行。
  • 啟動VM
  • 如果您還沒有,請閱讀上面鏈接的宅基地帖子,然後啟動並運行。運行新的Homestead盒子後,您立即應該能夠執行此操作:
  • >

>這很好,這是因為默認安裝的文件夾實際上還不包含任何文件。現在,vagrant ssh進入VM,並執行以下命令:

>

如何從源安裝PHP擴展這將在默認設置為homestead的路徑中創建一個有效的PHP信息文件。刷新URL現在將產生一個phpinfo屏幕:

<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>
登入後複製
登入後複製
登入後複製
登入後複製

準備環境

要從源構建擴展,我們需要安裝在計算機上的PHP開發工具,以及可以生成擴展文件的編譯器。以下是您在各種操作系統上安裝這些先決條件的方式:如何從源安裝PHP擴展

ubuntu

<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>
登入後複製
登入後複製
登入後複製
登入後複製

fedora

<span>sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev</span>
登入後複製
登入後複製

rhel

<span>sudo yum install php-devel php-mysqlnd gcc libtool</span>
登入後複製
登入後複製

> suse

<span>sudo yum install php-devel php-mysql gcc libtool</span>
登入後複製
登入後複製

如果您使用的是最新的宅基地,則所有這些工具都將為您安裝。準備所有準備的東西,讓我們開始安裝擴展名。

>安裝擴展

>您可以安裝兩種類型的擴展:與PHP捆綁但默認未安裝,第三方擴展。諸如Phalcon之類的第三方擴展通常通過提供快捷方式使安裝過程變得更加容易,因為它們不必遵守某些傳統捆綁的PHP擴展。

首先,讓我們進入VM上的主文件夾:CD〜。在那裡,製作下載文件夾,然後將CD添加到其中。安裝捆綁的擴展程序時,您需要在計算機上使用PHP的源代碼,最好是與當前版本相匹配。 Homestead版本的使用率為5.5.12,所以我將下載一個:>

>我正在使用上面的比利時鏡子,隨意使用下載檔案中的一個或任何其他鏡子。
<span>yast2 -i php5-pear php5-devel php5-mysql gcc</span>
登入後複製
登入後複製

>要查看所有捆綁擴展的源,請進入未架構的PHP源代碼文件夾中的EXT文件夾,並使用LS。

安裝捆綁的擴展如何從源安裝PHP擴展

首先,如果您還沒有安裝它,我們將安裝PHP-INTL擴展程序。如果這樣做,那很好 - 您將在下面看到的安裝過程對於每個捆綁的PHP擴展程序都是相同的。 INTL擴展是用於國際化的 - 如果您有興趣,請在此處閱讀更多。

>

>看到INTL擴展名需要ICU庫作為先決條件(如需求中所述),讓我們先安裝。

在其他分佈下,安裝說明可能會有所不同。最好是參考ICU網站或此步驟的個人發行文檔。 >

安裝了ICU後,請在仍在Ext文件夾中的同時進行以下操作:>
<span>wget http://be2.php.net/distributions/php-5.5.12.tar.bz2
</span><span>tar xvjf php-5.5.12.tar.bz2
</span><span>cd php-5.5.12</span>
登入後複製

讓我們解釋一下發生的事情。

    phpize準備擴展名的文件夾以進行補充。它允許您通過創建配置文件來執行後續命令,並基本上使擴展程序的文件夾“思考”它是PHP本身。實際上,PHPize之後的過程與您從源中安裝PHP時要做的事情相同 - 僅在這種情況下,只需編譯PHP的片段並準備與已編譯和安裝的PHP一起使用。
  • ./配置-enable-intl配置編譯環境。它準備了編譯器將需要製作Intl.so文件所需的所有內容。即使我們在INTL文件夾中,啟用式標誌也是必要的,因為該文件夾有效地認為它是
  • > php,並且我們需要幫助它實現這種幻覺。該命令告訴它:“好,您是PHP的源代碼。現在編譯並使用INTL擴展名安裝。
  • > make將把源彙編為intl.o,將文件放在您當前所在的文件夾中,在模塊子文件夾下方。 sudo make install會將此文件移至當前PHP安裝的擴展文件夾中。 > >我們現在需要做的就是通過讓php.ini消耗它來啟用擴展。我們稍後會這樣做,讓我們首先編譯第三方擴展。
  • >
  • 安裝第三方擴展
  • 我們將安裝Mongo作為第三方擴展。 Mongo有二進制分佈,使安裝變得更簡單,但為了教育,讓我們手動進行。我們假設您已經安裝了實際的Mongo,因此僅關注PHP擴展名。如果您沒有安裝Mongo,請參閱其安裝文檔。
  • >

>這已經構建了我們的mongo.so文件,並將其放入PHP安裝的擴展文件夾中。我們將在下一部分中啟用它。

啟用和測試
<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>
登入後複製
登入後複製
登入後複製
登入後複製

查看我們的php擴展文件夾中是否確實在列出的。 如何從源安裝PHP擴展

如您所見,在那裡,它們在鮮綠色中突出顯示。 為了使它們啟用,我們需要告訴php.ini。有幾種方法可以做到這一點:

  1. >您可以將行擴展線= mongo.so。這起作用,在大多數情況下是一種完全有效的方法。
  2. >
  3. >您可以為每個中的每個文件創建一個單獨的INI文件,將它們放入加載php.ini後自動包含的文件夾中,並以這種方式維護php.ini的分離和隔離。這種方法更健康,儘管很難實現。
  4. >
  5. 您可以組合2)和用於啟用PHP mod的默認工具。宅基地使用這種方法,我們也會。
  6. >
<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>
登入後複製
登入後複製
登入後複製
登入後複製

此文件夾是所有此類INI文件的存儲庫。在此處創建兩個新文件:

<span>sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev</span>
登入後複製
登入後複製

這些命令創建了兩個新的INI文件,每個文件都用於我們以前構建的擴展之一。由於它們現在在mods-ovabable文件夾中,我們可以使用已經可用的php5enmod(hart for php enable mod)命令行工具。 >

<span>sudo yum install php-devel php-mysqlnd gcc libtool</span>
登入後複製
登入後複製
>注意:如果您沒有PHP5ENMOD工具,則將INI文件鏈接到各種PHP Runtimes的Conf.d文件夾中,將有能力:>

有四個條目的原因是我們具有PHP的命令行版本和PHP的FPM版本。每個人都使用自己的php.ini文件,每個文件都會加載自己的conf.d文件夾以進行擴展 - 因此,如果我們希望全方位的擴展名可用。僅當您沒有php5enmod工具時,才使用此方法。
<span>sudo yum install php-devel php-mysql gcc libtool</span>
登入後複製
登入後複製
>

最後,讓我們重新啟動nginx和php-fpm加載這些更改。

查看我們是否已安裝了它們,請從之前刷新Phpinfo屏幕並分別搜索Mongo和Intl。

>
<span>yast2 -i php5-pear php5-devel php5-mysql gcc</span>
登入後複製
登入後複製

成功! 如何從源安裝PHP擴展

刪除擴展

要刪除擴展,除非您在空間上確實很低,否則無需刪除任何實際文件。您可以通過三種方式進行:

如果您有可用的工具,請運行php5dismod。這與上述PHP5ENMOD工具相反。 .SO文件將保留在適當的位置,並且INI文件將保留在mods-ovail中,它們只是不會加載,因為它們的符號鏈接將從fpm和cli conf.d文件夾中刪除。

>手動刪除符號鏈接。例如。 sudo rm /etc/php5/cli/conf.d/mongo.ini

    >如果將擴展名直接放入php.ini文件中,從php.ini文件中刪除這些行,或者更好,請對它們進行評論,以便在您改變主意的情況下可以進一步使用。
  1. 結論
  2. 如您所見,即使沒有精確的說明,從源安裝擴展也非常簡單,即使擴展名不受操作系統的官方存儲庫的支持。下次您需要在 *NIX系統上的PHP安裝中添加擴展名(此教程也適用於OS X),請參閱此帖子以獲取更新。

    請在下面留下您的反饋,讓我知道您是否對特定的擴展程序感到困惑,並希望幫助安裝它。 >

    經常詢問的問題(常見問題解答)有關從源

    安裝PHP擴展的問題

    >從源安裝PHP擴展的先決條件是什麼?首先,您需要在系統上安裝PHP。您還需要設置PHP開發環境,其中包括編譯器和製造商等工具。此外,您需要使用PHP源代碼,因為您將直接從此代碼中構建擴展名。最後,您需要具有擴展名的源代碼。通常可以從擴展名的官方網站或諸如PECL等存儲庫中下載。

    >

    >我如何驗證是否正確安裝了PHP擴展名?

    >

    >

    >它通過使用phpinfo()函數安裝。此功能提供了有關您的PHP安裝的大量信息,包括已安裝的擴展名列表。要使用它,請在Web服務器的文檔root中創建一個新的PHP文件,將調用添加到phpinfo(),然後在Web瀏覽器中查看此文件。已安裝的擴展名在“ PHP Core”部分中列出。

    >我可以在Windows系統上安裝PHP擴展嗎?但是,與Unix樣系統相比,該過程略有不同。您通常會下載預編譯的DLL文件並將其添加到PHP安裝中,而不是從源中編譯擴展名。 php.net網站提供了有關如何執行此操作的詳細說明。

    >

    如果在安裝過程中遇到錯誤,該怎麼辦?

    如果您在安裝過程中遇到錯誤,則該怎麼辦步驟是仔細閱讀錯誤消息。它通常包含有關出了什麼問題的線索。常見問題包括缺失依賴項,不正確的配置選項以及PHP源代碼問題。如果您無法自己解決問題,請考慮向PHP社區尋求幫助。您可以在其中要求提供幫助的許多論壇和郵件列表。

    我如何更新PHP擴展名?

    >更新PHP擴展程序通常涉及下載擴展程序的源代碼和源代碼的最新版本和然後重複安裝過程。但是,確切的步驟可以根據擴展而有所不同。最好檢查擴展程序的官方文檔中的特定更新說明。

    我可以一次安裝多個PHP擴展名嗎?這可以通過在configure命令中指定多個擴展名來完成。但是,請記住,每個擴展程序可能具有自己的一組依賴項和配置選項。

    >如何卸載PHP擴展名?

    卸載PHP擴展程序涉及從php.ini文件中刪除擴展名的配置,然後重新啟動Web服務器。如果將擴展名安裝為共享模塊,則您也可能需要刪除模塊的.so或.dll文件。

    >什麼是pecl存儲庫?

    > pecl存儲庫是一個集合以源代碼分配的PHP擴展名。可以使用PECL命令安裝這些擴展名,該命令可以自動下載,編譯和安裝擴展名的過程。

    >

    >我可以安裝php擴展程序而無需root訪問嗎?

    是的,可以安裝無根訪問的PHP擴展。這可以通過在主目錄中安裝PHP然後在此處安裝擴展名來完成。但是,這種方法需要更多的技術知識,並且可能不適合所有用戶。

    >

    有哪些常見的PHP擴展名?它們做了什麼?

    >

    有許多可用的PHP擴展名PHP語言的其他功能。一些常見的擴展名包括用於與MySQL數據庫進行交互的mysqli,用於創建和操縱圖像文件的GD以及用於製作HTTP請求的捲曲。 >

以上是如何從源安裝PHP擴展的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板