首頁 >後端開發 >php教程 >如何在Heroku上安裝自定義PHP擴展

如何在Heroku上安裝自定義PHP擴展

Lisa Kudrow
Lisa Kudrow原創
2025-02-19 11:53:09639瀏覽

如何在Heroku上安裝自定義PHP擴展

在本教程中,我們將學習如何在Heroku上安裝自定義擴展。具體來說,我們將安裝phalcon。

鑰匙要點

可以使用PHP buildpack工具在Heroku上安裝自定義PHP擴展,例如Phalcon,該工具為在Heroku上運行應用程序的環境設置了。

該過程涉及在buildpack-php/bin目錄中創建一個自定義的phalcon.sh文件,編輯bin/compile文件以執行它,並添加text extension = phalcon.so file。
  • >必須在Heroku上創建一個新的應用程序,並帶有一個空的Composer.json文件,以表明它是PHP應用程序。 Heroku將啟用相應的PHP擴展名,並將其放入支持/構建/擴展/no-debug-non-Zts-ZTS-20121212文件夾中。
  • >
  • >必須在procfile文件中指定Web根,然後將Phalcon網站克隆到Repo文件夾中。將所有提交推向中央存儲庫後,將創建一個運行的phalconphp.com克隆。
  • >註冊並設置
  • 為了使用Heroku,您必須註冊Heroku帳戶。 Heroku通常與命令行界面一起使用。要使用該界面,您需要為操作系統安裝HEROKU工具帶軟件包。如果您使用的是Linux,請打開終端並鍵入以下命令。
  • >
>安裝工具帶後,您可以從命令外殼訪問Heroku命令。使用您在創建Heroku帳戶時使用的電子郵件地址和密碼進行身份驗證:>

>在提示下按Enter上傳您現有的SSH鍵或創建新的鍵,用於以後推動代碼。 MBSTRING和MCRYPT是主要的 - 模板引擎(VOLT)以及某些驗證器,Escaper和濾波器使用MBSTRING,而MCRYPT則在安全組件(生成安全的哈希等)中使用。 🎜> 為了安裝上面的元素,我們將使用PHP buildpack工具。讓我們解釋一下這是什麼意思。
wget -qO- https://toolbelt.heroku.com/install.sh | sh
根據官方的Heroku文檔,BuildPacks提供了魔術和靈活性,使您在Heroku上運行您的應用程序如此簡單。當您推動代碼時,構建包是處理環境設置的組件,以便您的應用程序可以運行。 BuildPack可以安裝依賴項,自定義軟件,操縱資產,並執行運行應用程序所需的其他任何操作。 Heroku並不總是有構建包,它們是Cedar堆棧帶來的新組件。

>您可以通過BuildPack文檔獲得有關這三個步驟以及更多信息的更多信息。

開始,我們在github上分配此代碼。單擊存儲庫中的“叉子”按鈕。為了能夠從事該項目,您需要將其克隆到本地機器。

運行以下代碼:

wget -qO- https://toolbelt.heroku.com/install.sh | sh
>在您的$ home/buildpack-php/bin目錄中創建phalcon.sh文件,其中包含以下內容:

heroku login


Enter your Heroku credentials.
Email: fcopensuse@gmail.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /home/duythien/.ssh/id_rsa.pub
此文件將安裝phalcon,但是必須指示Heroku執行它。為此,您將必須編輯bin/compile文件,並在其中添加以下行:>

此外,您需要將文本擴展添加= phalcon.so添加到“ conf/php/php/php.ini”的文件:

<span>mbstring
</span><span>mcrypt
</span><span>openssl
</span><span>PDO
</span><span>PDO/Mysql
</span><span>PDO/Postgresql
</span><span>PDO/Sqlite
</span><span>PDO/Oracle</span>

現在,我們可以將新的構建包推到:

git clone https://github.com/duythien/heroku-buildpack-php.git buildpack-php
cd buildpack-php

>在Heroku

上創建一個新應用程序
#!/bin/bash
# Build Path: /app/.heroku/php/
dep_url=git://github.com/phalcon/cphalcon.git
phalcon_dir=cphalcon
echo "-----> Building Phalcon..."

### Phalcon
echo "[LOG] Downloading PhalconPHP"
git clone $dep_url -q
if [ ! -d "$phalcon_dir" ]; then
  echo "[ERROR] Failed to find phalconphp directory $phalcon_dir"
  exit
fi
cd $phalcon_dir/build

# /app/php/bin/phpize
# ./configure --enable-phalcon --with-php-config=$PHP_ROOT/bin/php-config
# make
# make install
BUILD_DIR=
ln -s $BUILD_DIR/.heroku /app/.heroku
export PATH=/app/.heroku/php/bin:$PATH
bash ./install
cd
echo "important extension phalcon into php.ini"
echo "extension=phalcon.so" >> /app/.heroku/php/etc/php/php.ini
>為您的應用創建一個目錄,然後更改為:

>

>此外,您需要給Heroku指出此應用程序是PHP應用程序。為此,創建一個稱為Composer.json的空文件。在UNIX系統上,您可以這樣創建此文件:

>
[...]
source $BP_DIR/bin/phalcon
[...]
然後,執行以下操作以使我們的應用程序的存儲庫iNTAR INTAR INTAR INTAR INTICE:

>創建一個可以推動的新的Heroku應用程序,請使用CLI的CREATE命令:
[....]
extension=phalcon.so
; Local Variables:
; tab-width: 4
; End:

這將在Heroku Ready上創建應用程序,並等待我們的代碼,並將GIT遙控器附加到我們本地代碼庫。您現在準備部署應用程序,但是尚無代碼。請按照下一部分為您的應用程序添加一些內容。
git add -A
git commit -m "edit php.ini and create phalcon file"
git push origin master
>

您的composer.json文件應該看起來像這樣:

>
mkdir phalcon-dev
cd phalcon-dev

>它將在Heroku上自動安裝McRypt,MbString等擴展名。如果您需要mongodb,memcached等,請進一步修改文件:>

現在,Heroku將啟用相應的PHP擴展名,並將它們放入支持/構建/擴展/no-debug-non-ZTS-20121212文件夾中。接下來,創建一個帶有以下內容的test.php文件:

>
touch composer<span>.json</span>

最後,讓我們部署Phalcon安裝:>

git init
git add -A
git commit -m" first commit"
第一個命令是指通過在buildpack_url config var中指定自定義buildpack來覆蓋heroku默認的buildpack。幾分鐘後,結果如下:

heroku create phalcon-dev

Creating phalcon-dev... done, stack is cedar
http://phalcon-dev.herokuapp.com/ | git@heroku.com:phalcon-dev.git
Git remote heroku added
>這將我們的代碼推向了Heroku,確定了它,並對它進行了構建過程,從而準備好進行部署。現在,我們的應用程序已在互聯網上使用!要驗證這一點,請立即打開:

<span>{
</span>  <span>"require": {
</span>    <span>"php": "5.5.12"
</span>  <span>}
</span><span>}</span>
如果一切順利,您應該在瀏覽器中看到以下屏幕:

>

<span>{
</span>  <span>"require": {
</span>    <span>"php": "5.5.12",
</span>    <span>"ext-memcached": "*",
</span>    <span>"ext-mongo": "*"
</span>  <span>}
</span><span>}</span>

>配置Web根並部署示例站點

現在是指定Web根的棘手部分。指定Web根需要更多的工作和背景信息。 Phalcon網站應用程序的根源是/app/phalcon-website/public。對於Heroku來說,默認情況下,Web根是Git-Tree的根。該目錄在內部映射到 /應用程序。為了改變這一點,我們需要創建一個所謂的procfile,每次heroku應用網絡節點啟動時都會啟動SH-Script。然後,該腳本修改了服務器配置,並包含您自己的配置,該配置將Web root設置為/App/phalcon-website/public。創建一個帶有以下內容的procfile文件(如果您使用的是Apache):

>
wget -qO- https://toolbelt.heroku.com/install.sh | sh

>克隆phalcon網站進入repo文件夾,完成後,git push命令將您本地主體上的所有提交發送到中央存儲庫。

heroku login


Enter your Heroku credentials.
Email: fcopensuse@gmail.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /home/duythien/.ssh/id_rsa.pub
>訪問該應用程序的公共URL,瞧,您在Heroku上有一個運行的phalconphp.com。

如何在Heroku上安裝自定義PHP擴展總結

在Heroku上安裝Phalcon(或任何其他PHP擴展)顯然既不容易也不簡單,但是如果您使用buildpacks,它將變得更加平易近人。

>

>在下面的評論中留下您的反饋,一如既往,如果您喜歡的話,請分享本文!

經常詢問有關在Heroku

上安裝自定義PHP擴展的問題(常見問題解答)

>如何在Heroku上安裝自定義PHP擴展?首先,您需要在項目root中創建一個名為“ composer.json”的文件。該文件將包含您要安裝的PHP擴展名。例如,如果要安裝'gd'擴展程序,則您的“ composer.json”文件應該看起來像:

{

{

“ require”:{“ ext- gd”: “*”

}
}

創建'composer.json'文件後,您需要在終端中運行'Composer Update'命令。這將在您的項目root中創建一個“ composer.lock”文件。您需要將“ composer.json”和“ composer.lock”文件提交給您的git存儲庫。最後,您可以使用“ Git Push Heroku Master”命令將更改推向Heroku。 Heroku將自動安裝您的“ composer.json”文件中指定的PHP擴展。

在嘗試在Heroku上安裝PHP擴展程序時,為什麼會遇到錯誤?一個常見的原因是,您要安裝的擴展名與您使用的PHP版本不兼容。您可以通過在終端中運行“ PHP -V”命令來檢查PHP版本。如果擴展名與您的PHP版本不兼容,則需要更新PHP版本或找到與您的PHP版本兼容的擴展版。

獲得錯誤的另一個常見原因是PECL存儲庫中不可用。 Heroku使用PECL存儲庫來安裝PHP擴展。如果該擴展名在PECL存儲庫中不可用,則不能在Heroku上安裝它。


我可以在Heroku上使用自定義的php.ini文件嗎? .ini在Heroku上歸檔。為此,您需要在項目根部創建一個“ .user.ini”文件。此文件將包含您的自定義PHP設置。例如,如果要增加最大文件上傳大小,則您的'.user.ini'文件應該看起來像這樣:

upload_max_filesize = 10mpost_max_size = 10m

“ .user.ini”文件,您需要將其提交給您的git存儲庫,並將更改推向Heroku。 Heroku將自動應用您的“ .user.ini”文件中指定的設置。


如何在Heroku上更新我的php版本?

>在Heroku上更新您的PHP版本涉及幾個步驟。首先,您需要在“ Composer.json”文件中指定新的PHP版本。例如,如果要更新到php 7.4,則您的“ composer.json”文件應該看起來像:

{

{

“ requiend”:{ {“ php”:“^7.4”

}

}
更新'composer.json'文件後,您需要在終端中運行'Composer Update'命令。這將更新“ composer.lock”文件。您需要將“ composer.json”和“ composer.lock”文件提交給您的git存儲庫。最後,您可以使用“ Git Push Heroku Master”命令將更改推向Heroku。 Heroku將自動更新您的php版本。

>我可以使用自定義的構建包在Heroku上安裝PHP擴展嗎? BuildPack是Heroku在將更改推向平台時運行的腳本。它負責設置應用程序的環境並安裝其依賴項。

要使用自定義構建包,您需要在“ app.json”文件或Heroku儀表板中指定它。例如,如果要使用“ heroku/php'buildpack,則您的'app.json'文件應該看起來像這樣:

{
{
“ buildpacks”:[
{
{
{
{ “ url”:“ heroku/php”
}
>]
}
}

在指定buildpack之後,您可以推動更改到埃羅子。 Heroku將自動運行BuildPack並安裝其中指定的PHP擴展名。

>在Heroku上安裝PHP擴展時,我如何故障排除問題? ,但是您可以使用一些策略。首先,您可以檢查Heroku日誌中是否有任何錯誤消息。您可以通過在終端中運行“ Heroku Logs”命令來訪問日誌。日誌可以為您提供有關導致問題的線索的線索。

>第二,您可以使用“ Heroku Run”命令直接在Heroku應用程序上運行命令。例如,您可以運行“ PHP -M”命令以列出所有已安裝的PHP擴展名。這可以幫助您驗證是否已安裝了特定的擴展名。

>最後,您可以使用“ Heroku Config”命令來檢查Heroku應用程序的配置。這可以幫助您驗證您的自定義php.ini設置是否已應用。

>

>我可以安裝Heroku上的PECL存儲庫中不可用的PHP擴展名嗎? Heroku的PECL存儲庫中無法使用的PHP擴展。 Heroku使用PECL存儲庫來安裝PHP擴展。如果擴展名在PECL存儲庫中不可用,則不能在Heroku上安裝。自定義構建包可以包含腳本以編譯和安裝來自源的PHP擴展。這需要對PHP和Unix shell腳本的高級知識。

>我如何驗證是否在Heroku上安裝了PHP擴展?您的Heroku應用程序上的' php -m'命令。此命令列出了所有已安裝的PHP擴展名。您可以在終端中使用“ Heroku Run”命令來運行此命令。例如,您可以運行以下命令以列出所有已安裝的PHP擴展名:

HEROKU RUN PHP -M

如果安裝了擴展名,則應顯示在已安裝的PHP擴展名列表中。

>我可以在Heroku上安裝多個PHP擴展嗎?為此,您需要指定要在“ composer.json”文件中安裝的所有擴展名。例如,如果要安裝'gd'和'mbString'擴展名,則您的'composer.json'文件應該看起來像這樣:

{
{
-gd“:”* “,
” ext-mbstring“:”*“
}
}
}

更新後“ Composer.json”文件,您需要在終端中運行“ Composer Update ”命令。這將更新“ composer.lock”文件。您需要將“ composer.json”和“ composer.lock”文件提交給您的git存儲庫。最後,您可以使用“ Git Push Heroku Master”命令將更改推向Heroku。 Heroku將自動安裝您的'composer.json'文件中指定的PHP擴展名。

>我可以使用'php.ini'文件在Heroku上安裝php擴展名?使用“ php.ini”文件在Heroku上安裝PHP擴展。 Heroku不支持安裝PHP擴展的“ php.ini”文件。相反,您需要使用“ composer.json”文件來指定要安裝的PHP擴展名。將更改推向平台時,Heroku將自動安裝“ composer.json”文件中指定的PHP擴展。

>

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn