目錄
>配置Web根並部署示例站點
{
>我可以使用自定義的構建包在Heroku上安裝PHP擴展嗎? BuildPack是Heroku在將更改推向平台時運行的腳本。它負責設置應用程序的環境並安裝其依賴項。
在指定buildpack之後,您可以推動更改到埃羅子。 Heroku將自動運行BuildPack並安裝其中指定的PHP擴展名。
>我可以安裝Heroku上的PECL存儲庫中不可用的PHP擴展名嗎? Heroku的PECL存儲庫中無法使用的PHP擴展。 Heroku使用PECL存儲庫來安裝PHP擴展。如果擴展名在PECL存儲庫中不可用,則不能在Heroku上安裝。自定義構建包可以包含腳本以編譯和安裝來自源的PHP擴展。這需要對PHP和Unix shell腳本的高級知識。
如果安裝了擴展名,則應顯示在已安裝的PHP擴展名列表中。
>我可以在Heroku上安裝多個PHP擴展嗎?為此,您需要指定要在“ composer.json”文件中安裝的所有擴展名。例如,如果要安裝'gd'和'mbString'擴展名,則您的'composer.json'文件應該看起來像這樣:
>
首頁 後端開發 php教程 如何在Heroku上安裝自定義PHP擴展

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

Feb 19, 2025 am 11:53 AM

如何在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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

我如何了解最新的PHP開發和最佳實踐? 我如何了解最新的PHP開發和最佳實踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

什麼是PHP,為什麼它用於Web開發? 什麼是PHP,為什麼它用於Web開發? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

如何設置PHP時區? 如何設置PHP時區? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

我如何驗證PHP中的用戶輸入以確保其符合某些標準? 我如何驗證PHP中的用戶輸入以確保其符合某些標準? Jun 22, 2025 am 01:00 AM

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

編寫清潔和可維護的PHP代碼的最佳實踐是什麼? 編寫清潔和可維護的PHP代碼的最佳實踐是什麼? Jun 24, 2025 am 12:53 AM

寫乾淨、易維護的PHP代碼關鍵在於清晰命名、遵循標準、合理結構、善用註釋和可測試性。 1.使用明確的變量、函數和類名,如$userData和calculateTotalPrice();2.遵循PSR-12標準統一代碼風格;3.按職責拆分代碼結構,使用MVC或Laravel式目錄組織;4.避免麵條式代碼,將邏輯拆分為單一職責的小函數;5.在關鍵處添加註釋並撰寫接口文檔,明確參數、返回值和異常;6.提高可測試性,採用依賴注入、減少全局狀態和靜態方法。這些做法提升代碼質量、協作效率和後期維護便利性。

什麼是php(serialize(),Unserialize())中的數據序列化? 什麼是php(serialize(),Unserialize())中的數據序列化? Jun 22, 2025 am 01:03 AM

thephpfunctionserize()andunSerialize()redustoconvertComplexdatStructDestoresToroStoroStoroSandaBackagagain.1.Serialize()

如何將PHP代碼嵌入HTML文件中? 如何將PHP代碼嵌入HTML文件中? Jun 22, 2025 am 01:00 AM

可以將PHP代碼嵌入HTML文件中,但需確保文件以.php為擴展名,以便服務器能正確解析。使用標準的標籤包裹PHP代碼,可在HTML中任意位置插入動態內容。此外,可在同一文件中多次切換PHP與HTML,實現條件渲染等動態功能。務必注意服務器配置及語法正確性,避免因短標籤、引號錯誤或遺漏結束標籤導致問題。

如何使用PHP執行SQL查詢? 如何使用PHP執行SQL查詢? Jun 24, 2025 am 12:54 AM

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas

See all articles