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

如何在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
在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

在Laravel中發現文件下載的存儲::下載在Laravel中發現文件下載的存儲::下載Mar 06, 2025 am 02:22 AM

Laravel框架的Storage::download方法提供了一個簡潔的API,用於安全地處理文件下載,同時管理文件存儲的抽象。 以下是一個在示例控制器中使用Storage::download()的例子:

PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

如何註冊和使用Laravel服務提供商如何註冊和使用Laravel服務提供商Mar 07, 2025 am 01:18 AM

Laravel的服務容器和服務提供商是其架構的基礎。 本文探討了服務容器,詳細信息服務提供商創建,註冊,並通過示例演示了實際用法。 我們將從OVE開始

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。