ホームページ > バックエンド開発 > PHPチュートリアル > HerokuにカスタムPHP拡張機能をインストールする方法

HerokuにカスタムPHP拡張機能をインストールする方法

Lisa Kudrow
リリース: 2025-02-19 11:53:09
オリジナル
637 人が閲覧しました

HerokuにカスタムPHP拡張機能をインストールする方法

このチュートリアルでは、Herokuにカスタム拡張機能をインストールする方法を学びます。具体的には、Phalconをインストールします

キーテイクアウト

PhalconなどのカスタムPHP拡張機能は、Herokuでアプリケーションを実行するための環境を設定するPHP BuildPackツールを使用してHerokuにインストールできます。

プロセスには、BuildPack-PHP/binディレクトリにカスタムphalcon.shファイルを作成し、ビン/コンパイルファイルを編集して実行し、テキスト拡張機能= phalcon.soをconf/php/php.iniに追加します。ファイル。
  • Herokuに新しいアプリケーションを作成する必要があり、空のComposer.jsonファイルを使用して、PHPアプリケーションであることを示します。 Herokuは、対応するPHP拡張機能を有効にし、それらをサポート/ビルド/拡張機能/No-Debug-non-zts-20121212フォルダーに入れます。
  • WebルートはProcFileファイルで指定する必要があり、Phalcon Webサイトはレポフォルダーにクローン化されます。すべてのコミットを中央リポジトリに押し込んだ後、Herokuの実行中のPhalconphp.comクローンが作成されます。
  • サインアップとセットアップ
  • Herokuを使用するには、Herokuアカウントにサインアップする必要があります。 Herokuは通常、コマンドラインインターフェイスで動作します。そのインターフェイスを使用するには、オペレーティングシステムにHeroku Toolbeltパッケージをインストールする必要があります。 Linuxを使用している場合は、端末を開き、次のコマンドを入力してください。
  • ツールベルトをインストールした後、コマンドシェルからHerokuコマンドにアクセスできます。 Herokuアカウントを作成するときに使用した電子メールアドレスとパスワードを使用して認証:

プロンプトでEnterを押して、既存のSSHキーをアップロードするか、後でコードをプッシュするために使用される新しいキーを作成します。

Phalconはサードパーティの拡張機能であるため、PHPにバンドルされていません。 Phalconには、次のコンポーネントが必要です

wget -qO- https://toolbelt.heroku.com/install.sh | sh
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
mbstringとmcryptが主なものです。Mbsstringはテンプレートエンジン(Volt)、およびいくつかのバリデーター、Escaper、およびフィルターで使用されますが、McRyptはセキュリティコンポーネントで使用されます(安全なハッシュなど) 上記の要素をインストールするために、PHP BuildPackツールを使用します。それが何を意味するのかを説明しましょう
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
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
公式のHerokuのドキュメントによると、BuildPackはHerokuでアプリを実行する魔法と柔軟性を提供します。コードをプッシュすると、buildPackは、アプリケーションが実行できるように環境のセットアップを処理するコンポーネントです。 BuildPackは、依存関係をインストールしたり、ソフトウェアをカスタマイズしたり、アセットを操作したり、アプリケーションを実行するのに必要なことを行うことができます。 Herokuは常にBuildPackを持っているわけではなく、Cedar Stackに付属する新しいコンポーネントです。

BuildPackドキュメントを通じて、これらの3つのステップなどについて詳細を確認できます。

始めるために、このコードをGitHubでフォークします。リポジトリの[フォーク]ボタンをクリックします。プロジェクトに取り組むことができるようにするには、地元のマシンにクローンする必要があります。

次のコードを実行します:

wget -qO- https://toolbelt.heroku.com/install.sh | sh
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
次のコンテンツを使用して、$ home/buildpack-php/binディレクトリにphalcon.shファイルを作成します。

このファイルはPhalconをインストールしますが、Herokuを実行するように指示する必要があります。そのためには、ビン/コンパイルファイルを編集し、そこのどこかに次の行を追加する必要があります。
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.soをファイル「conf/php/php.ini」に追加する必要があります。

新しいbuildpackを押し上げることができます:
<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>
ログイン後にコピー

Heroku
git clone https://github.com/duythien/heroku-buildpack-php.git buildpack-php
cd buildpack-php
ログイン後にコピー
に新しいアプリケーションを作成します

アプリのディレクトリを作成して変更します:

#!/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
ログイン後にコピー
さらに、このアプリケーションがPHPアプリケーションであることを示すHerokuにHerokuに示す必要があります。これを行うには、composer.jsonという空のファイルを作成します。 UNIXシステムでは、次のようにこのファイルを作成できます。

次に、以下を実行して、アプリのレポを開始します。

プッシュできる新しいHerokuアプリケーションを作成するには、CLIの作成コマンドを使用してください。
[...]
source $BP_DIR/bin/phalcon
[...]
ログイン後にコピー

これにより、Herokuのアプリケーションが作成され、コードを待っているアプリケーションが作成され、Local CodeBaseにGitリモートを添付します。これでアプリケーションを展開する準備ができましたが、まだコードはありません。次のセクションに従って、アプリケーションにコンテンツを追加してください。

composer.jsonファイルは次のようにするように作る必要があります:
[....]
extension=phalcon.so
; Local Variables:
; tab-width: 4
; End:
ログイン後にコピー

HerokuにMcRypt、Mbstringなどの拡張機能を自動的にインストールします。 mongodb、memcachedなどが必要な場合は、ファイルをさらに変更します。
git add -A
git commit -m "edit php.ini and create phalcon file"
git push origin master
ログイン後にコピー

Herokuは、対応するPHP拡張機能を有効にし、サポート/ビルド/拡張機能/No-Debug-non-zts-20121212フォルダーに入れます。次に、次のコンテンツを使用してtest.phpファイルを作成します

mkdir phalcon-dev
cd phalcon-dev
ログイン後にコピー
最後に、Phalconのインストールを展開してみましょう:

最初のコマンドは、buildpack_url config var。数分後、結果は次のとおりです

touch composer<span>.json</span>
ログイン後にコピー
これにより、コードを採用し、それをHerokuにプッシュし、それを特定し、それに対してビルドプロセスを実行し、展開の準備が整いました。今、私たちのアプリケーションはインターネット上でライブです!これを検証するには、今すぐ開きます:

git init
git add -A
git commit -m" first commit"
ログイン後にコピー
すべてがうまくいった場合、ブラウザに次の画面が表示されます。

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
ログイン後にコピー

Webルートを構成し、サンプルサイトを展開します

今では、Webルートを指定しているトリッキーな部分が登場します。 Webルートを指定するには、もう少し作業と背景情報が必要です。 Phalcon Webサイトアプリケーションのgitツリーのルートは/App/Phalcon-Website/publicです。 Herokuの場合、デフォルトでは、WebルートはGit-Treeのルートです。そのディレクトリは、 /アプリに内部マッピングされています。これを変更するには、Heroku App Web-Nodeが起動するたびにSH-Scriptを起動するいわゆるProcfileを作成する必要があります。次に、そのスクリプトはサーバー構成を変更し、Webルートを/app/phalcon-website/publicに設定する独自の構成を含みます。次のコンテンツを含むprocfileファイルを作成します(Apacheを使用している場合):

wget -qO- https://toolbelt.heroku.com/install.sh | sh
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Phalcon Webサイトをレポフォルダーにクローン化し、それが完了したら、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でfalconphp.comを実行しています。

結論HerokuにカスタムPHP拡張機能をインストールする方法

HerokuにPhalcon(または他のPHP拡張機能)をインストールすることは明らかに簡単でもシンプルでもありませんが、BuildPackを使用すると、はるかに親しみやすくなります。

以下のコメントにフィードバックを残してください。いつものように、気に入ったらこの記事を共有してください!

HerokuにカスタムPHP拡張機能のインストールに関するよくある質問(FAQ)

HerokuにカスタムPHP拡張機能をインストールするには、HerokuにカスタムPHP拡張機能をインストールするには、いくつかのステップが含まれます。まず、プロジェクトルートに「composer.json」という名前のファイルを作成する必要があります。このファイルには、インストールするPHP拡張機能が含まれます。たとえば、「GD」拡張機能をインストールする場合、「composer.json」ファイルは次のようになります。 "*"

}

}

「composer.json」ファイルを作成した後、端末で「Composer Update」コマンドを実行する必要があります。これにより、プロジェクトルートに「Composer.Lock」ファイルが作成されます。 gitリポジトリに「composer.json」と「composer.lock」ファイルの両方をコミットする必要があります。最後に、「Git Push Heroku Master」コマンドを使用して、Herokuに変更をプッシュできます。 Herokuは、「composer.json」ファイルで指定されたPHP拡張機能を自動的にインストールします。

HerokuにPHP拡張機能をインストールしようとしたときにエラーが発生したのはなぜですか?

HerokuにPHP拡張機能をインストールしようとするときにエラーが発生した理由がいくつかあります。一般的な理由の1つは、インストールしようとしている拡張機能が、使用しているPHPバージョンと互換性がないことです。端末で「PHP -V」コマンドを実行して、PHPバージョンを確認できます。拡張機能がPHPバージョンと互換性がない場合は、PHPバージョンを更新するか、PHPバージョンと互換性のある拡張機能のバージョンを見つける必要があります。拡張機能はPECLリポジトリでは利用できません。 HerokuはPECLリポジトリを使用してPHP拡張機能をインストールします。拡張機能がPECLリポジトリで使用できない場合は、Herokuにインストールできません。 Herokuの.iniファイル。これを行うには、プロジェクトルートに「.user.ini」ファイルを作成する必要があります。このファイルには、カスタムPHP設定が含まれます。たとえば、最大ファイルのアップロードサイズを増やす場合、 '.user.ini'ファイルは次のようになります。 '.user.ini'ファイルでは、gitリポジトリにコミットし、変更をherokuにプッシュする必要があります。 Herokuは、「.user.ini」ファイルで指定された設定を自動的に適用します。まず、「composer.json」ファイルで新しいPHPバージョンを指定する必要があります。たとえば、PHP 7.4を更新する場合、「composer.json」ファイルは次のようになります。
}
}

「composer.json」ファイルを更新した後、端末で「Composer Update」コマンドを実行する必要があります。これにより、「Composer.Lock」ファイルが更新されます。 gitリポジトリに「composer.json」と「composer.lock」ファイルの両方をコミットする必要があります。最後に、「Git Push Heroku Master」コマンドを使用して、Herokuに変更をプッシュできます。 HerokuはPHPバージョンを自動的に更新します

カスタムBuildPackを使用してHerokuにPHP拡張機能をインストールできますか?

​​

はい、カスタムビルドパックを使用してHerokuにPHP拡張機能をインストールできます。 BuildPackは、変更をプラットフォームにプッシュするときにHerokuが実行するスクリプトです。アプリケーションの環境を設定し、その依存関係をインストールする責任があります。

カスタムビルドパックを使用するには、「app.json」ファイルまたはherokuダッシュボードで指定する必要があります。たとえば、「heroku/php」buildpackを使用する場合、「app.json」ファイルは次のようになります。 "url": "heroku/php"
}
]
}

buildpackを指定した後、変更をプッシュすることができますヘロク。 Herokuは、BuildPackを自動的に実行し、指定されたPHP拡張機能をインストールします。 、しかし、使用できるいくつかの戦略があります。まず、エラーメッセージについてHerokuログを確認できます。端末で「Herokuログ」コマンドを実行してログにアクセスできます。ログは、問題の原因についての手がかりを与えることができます。

次に、「Heroku Run」コマンドを使用して、Herokuアプリでコマンドを直接実行できます。たとえば、「PHP -M」コマンドを実行して、インストールされているすべてのPHP拡張機能をリストできます。これにより、特定の拡張子がインストールされているかどうかを確認するのに役立ちます。

最後に、「Heroku Config」コマンドを使用してHerokuアプリの構成を確認できます。これにより、カスタムPHP.ini設定が適用されているかどうかを確認するのに役立ちます。 HerokuのPECLリポジトリで利用できないPHP拡張機能。 HerokuはPECLリポジトリを使用してPHP拡張機能をインストールします。拡張機能がPECLリポジトリで使用できない場合は、Herokuにインストールすることはできません。

ただし、PECLリポジトリで使用できないPHP拡張機能をインストールするには、カスタムビルドパックを使用できます。カスタムビルドパックには、ソースからPHP拡張機能をコンパイルおよびインストールするスクリプトを含めることができます。これには、PHPおよびUNIXシェルスクリプトの高度な知識が必要です。

HerokuにPHP拡張機能がインストールされているかどうかを確認するにはどうすればよいですか? herokuアプリの「php -m」コマンド。このコマンドには、インストールされているすべてのPHP拡張機能がリストされています。端末に「Heroku Run」コマンドを使用して、このコマンドを実行できます。たとえば、次のコマンドを実行して、インストールされているすべてのPHP拡張機能をリストできます。


heroku run php -m

拡張機能がインストールされている場合、インストールされたPHP拡張機能のリストに表示されます。
Herokuに複数のPHP拡張機能をインストールできますか?

​​

はい、Herokuに複数のPHP拡張機能をインストールできます。これを行うには、「composer.json」ファイルにインストールするすべての拡張機能を指定する必要があります。たとえば、「GD」と「MbString」拡張機能をインストールする場合、「composer.json」ファイルは次のようになります。 -gd ":"*"、

" ext-mbstring ":"*"
}
}

更新後「Composer.json」ファイルでは、端末で「Composer Update」コマンドを実行する必要があります。これにより、「Composer.Lock」ファイルが更新されます。 gitリポジトリに「composer.json」と「composer.lock」ファイルの両方をコミットする必要があります。最後に、「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 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート