Heim > Backend-Entwicklung > PHP-Tutorial > So installieren Sie benutzerdefinierte PHP -Erweiterungen auf Heroku

So installieren Sie benutzerdefinierte PHP -Erweiterungen auf Heroku

Lisa Kudrow
Freigeben: 2025-02-19 11:53:09
Original
637 Leute haben es durchsucht

So installieren Sie benutzerdefinierte PHP -Erweiterungen auf Heroku

In diesem Tutorial lernen wir, wie Sie benutzerdefinierte Erweiterungen auf Heroku installieren. Insbesondere installieren wir Phalcon.

Key Takeaways

  • Benutzerdefinierte PHP -Erweiterungen wie Phalcon können mit dem PHP Buildpack -Tool auf Heroku installiert werden, das die Umgebung für den Ausführen von Anwendungen auf Heroku einstellt.
  • Der Prozess beinhaltet das Erstellen einer benutzerdefinierten Phalcon.sh-Datei im Buildpack-Php/Bin-Verzeichnis, das Bearbeiten der Bin/Compile-Datei, um sie auszuführen Datei.
  • Eine neue Anwendung muss auf Heroku mit einer leeren Composer.json -Datei erstellt werden, um anzuzeigen, dass es sich um eine PHP -Anwendung handelt. Heroku ermöglicht die entsprechenden PHP-Erweiterungen und stellt sie in den Ordner zur Unterstützung/Build/-Erweiterungen/No-Debug-non-lts-20121212 ein.
  • Das Webroot muss in einer Procfile -Datei angegeben und auf der Phalcon -Website in den Repo -Ordner kloniert werden. Nachdem alle Commits in das zentrale Repository gedrückt wurden, wird ein laufender Phalconphp.com -Klon auf Heroku erstellt.

Anmelden und einrichten

Um Heroku zu verwenden, müssen Sie sich für ein Heroku -Konto anmelden. Heroku arbeitet im Allgemeinen mit einer Befehlszeilenschnittstelle. Um diese Benutzeroberfläche zu verwenden, müssen Sie das Heroku -Toolbelt -Paket für Ihr Betriebssystem installieren. Wenn Sie Linux verwenden, öffnen Sie Terminal und geben Sie den folgenden Befehl ein.

wget -qO- https://toolbelt.heroku.com/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Nach dem Installieren des Symbollbeltes haben Sie von Ihrer Befehlsschale auf den Befehl heroku zugreifen. Authentifizieren Sie sich mit der E -Mail -Adresse und dem Passwort, die Sie beim Erstellen Ihres Heroku -Kontos verwendet haben:

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Drücken Sie die Eingabetaste an der Eingabeaufforderung, um Ihre vorhandene SSH -Taste hochzuladen oder eine neue zu erstellen, die zum späteren Code verwendet wird.

Phalcon ist eine Erweiterung von Drittanbietern und somit nicht mit PHP gebündelt. Phalcon benötigt die folgenden Komponenten:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

mbstring und McRypt sind die wichtigsten - Mbstring wird von der Templating -Engine (Volt) sowie einigen Validatoren, der Escaper und dem Filter, verwendet, während McRypt in der Sicherheitskomponente verwendet wird (generieren sicherer Hashes usw.)

Um die obigen Elemente zu installieren, verwenden wir das PHP Buildpack -Tool. Lassen Sie uns erklären, was das bedeutet.

Nach der offiziellen Heroku -Dokumentation bieten Buildpacks die Magie und Flexibilität, die das Ausführen Ihrer Apps auf Heroku so einfach macht. Wenn Sie Ihren Code drücken, ist das Buildpack die Komponente, die die Einrichtung Ihrer Umgebung so abwickelt, dass Ihre Anwendung ausgeführt wird. Das Buildpack kann Abhängigkeiten installieren, Software anpassen, Vermögenswerte manipulieren und alles andere ausführen, das für die Ausführung Ihrer Anwendung erforderlich ist. Heroku hatte nicht immer Buildpacks, sie sind eine neue Komponente, die mit dem Zedernstapel geliefert wurde.

Sie können weitere Informationen zu diesen drei Schritten und mehr über die Buildpack -Dokumentation erhalten.

Um loszulegen, geben wir diesen Code auf GitHub auf. Klicken Sie im Repository auf die Schaltfläche "Fork". Um an dem Projekt arbeiten zu können, müssen Sie es an Ihre lokale Maschine klonen.

Führen Sie den folgenden Code aus:

wget -qO- https://toolbelt.heroku.com/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie die Datei phalcon.sh in Ihrem Verzeichnis $ home/buildpack-php/bin mit dem folgenden Inhalt:

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Diese Datei installiert Phalcon, aber Heroku muss angewiesen werden, sie auszuführen. Dazu müssen Sie die Bin/Compile -Datei bearbeiten und die folgende Zeile irgendwo dort hinzufügen:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Zusätzlich müssen Sie der Datei "Conf/Php/Php.ini":

die Textweiterung = phalcon.so hinzufügen.
git clone https://github.com/duythien/heroku-buildpack-php.git buildpack-php
cd buildpack-php
Nach dem Login kopieren

Jetzt können wir unseren neuen Buildpack hochschieben:

#!/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
Nach dem Login kopieren

Erstellen Sie eine neue Anwendung auf Heroku

Erstellen Sie ein Verzeichnis für Ihre App und ändern Sie sich darauf:

[...]
source $BP_DIR/bin/phalcon
[...]
Nach dem Login kopieren

Zusätzlich müssen Sie Heroku einen Hinweis darauf geben, dass diese Anwendung eine PHP -Anwendung ist. Erstellen Sie dazu eine leere Datei namens Composer.json. Auf einem Unix -System können Sie diese Datei wie SO erstellen:

[....]
extension=phalcon.so
; Local Variables:
; tab-width: 4
; End:
Nach dem Login kopieren

Führen Sie dann Folgendes aus, um das Repo für unsere App zu stören:

git add -A
git commit -m "edit php.ini and create phalcon file"
git push origin master
Nach dem Login kopieren

Um eine neue Heroku -Anwendung zu erstellen, die Sie drücken können, verwenden Sie den Befehl creatis create:

mkdir phalcon-dev
cd phalcon-dev
Nach dem Login kopieren

Dies erstellt die Anwendung auf Heroku bereit und wartet auf unseren Code und fügt unsere lokale Codebasis auch eine Git -Fernbedienung bei. Sie sind jetzt bereit, die Anwendung bereitzustellen, aber es gibt noch keinen Code. Befolgen Sie den nächsten Abschnitt, um Ihrer Anwendung einige Inhalte hinzuzufügen.

Ihre Composer.json -Datei sollte so aussehen:

touch composer<span>.json</span>
Nach dem Login kopieren

wird automatisch Erweiterungen wie McRypt, Mbstring usw. auf Heroku installiert. Wenn Sie MongoDB, Memcached usw. benötigen, ändern Sie die Datei weiter:

git init
git add -A
git commit -m" first commit"
Nach dem Login kopieren

Jetzt ermöglicht Heroku die entsprechenden PHP-Erweiterungen und stellt sie in den Ordner zur Unterstützung/Build/-Erweiterungen/NO-Debug-non-lts-20121212 ein. Erstellen Sie als nächstes eine test.php -Datei mit dem folgenden Inhalt:

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
Nach dem Login kopieren

setzen wir schließlich die Phalcon -Installation ein:

<span>{
</span>  <span>"require": {
</span>    <span>"php": "5.5.12"
</span>  <span>}
</span><span>}</span>
Nach dem Login kopieren

Der erste Befehl bedeutet, dass das Heroku -Standard -Buildpack überschreibt, indem ein benutzerdefiniertes Buildpack in der buildpack_url config var angegeben wird. Nach wenigen Minuten lauten die Ergebnisse wie folgt:

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

Dies hat unseren Code genommen, ihn nach Heroku gebracht, identifiziert und einen Build -Prozess dagegen ausgeführt, wodurch er für den Einsatz bereit ist. Jetzt ist unsere Bewerbung live im Internet! Um dies zu überprüfen, öffnen Sie es jetzt:

<span><span><?php phpinfo() ; ?></span></span>
Nach dem Login kopieren

Wenn alles gut läuft, sollten Sie den folgenden Bildschirm in Ihrem Browser sehen:

So installieren Sie benutzerdefinierte PHP -Erweiterungen auf Heroku

Konfigurieren Sie das Webstamm

kommt nun der knifflige Teil, der das Webroot angibt. Das Angeben des Web Root benötigt ein wenig mehr Arbeit und Hintergrundinformationen. Das Root der Phalcon-Website-Anwendung im Git-Baum ist/App/Phalcon-Website/Public. Für Heroku ist die Web-Root standardmäßig die Wurzel des Git-Tree. Dieses Verzeichnis ist intern auf /App zugeordnet. Um dies zu ändern, müssen wir ein sogenannter Procfile erstellen, das jedes Mal, wenn der Web-Node der Heroku-App startet, ein Sh-Script startet. Dieses Skript ändert dann die Serverkonfiguration und enthält Ihre eigene Konfiguration, in der das Web-Root auf/App/Phalcon-Websit/Public festgelegt wird. Erstellen Sie eine Procfile -Datei mit dem folgenden Inhalt (wenn Sie Apache verwenden):

wget -qO- https://toolbelt.heroku.com/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Klonen Sie die Phalcon -Website in den Repo -Ordner, und wenn sie fertig ist, sendet der Befehl Git Push alle Commits auf Ihrem lokalen Master an das zentrale Repository.

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Besuchen Sie die öffentliche URL der App und voila, Sie haben hier einen laufenden Phalconphp.com -Klon auf Heroku.

So installieren Sie benutzerdefinierte PHP -Erweiterungen auf Heroku

Abschließend

Die Installation von Phalcon (oder einer anderen PHP -Erweiterung) auf Heroku ist offensichtlich weder einfach noch einfach, aber wenn Sie Buildpacks verwenden, wird es viel zugänglicher.

Hinterlassen Sie Ihr Feedback in den Kommentaren unten und wie immer teilen Sie diesen Artikel, wenn Ihnen es gefallen hat!

häufig gestellte Fragen (FAQs) zur Installation benutzerdefinierter PHP -Erweiterungen auf Heroku

Wie kann ich benutzerdefinierte PHP -Erweiterungen auf Heroku installieren? Zunächst müssen Sie eine Datei mit dem Namen "Composer.json" in Ihrem Projektroot erstellen. Diese Datei enthält die PHP -Erweiterungen, die Sie installieren möchten. Wenn Sie beispielsweise die Erweiterung "GD" installieren möchten, sollte Ihre Datei "Composer.json" so aussehen:

{

"Erforderlich": {
"ext-gd": "*"
}
}

Nach dem Erstellen der Datei 'Composer.json' müssen Sie den Befehl 'Composer Update' in Ihrem Terminal ausführen. Dadurch wird in Ihrem Projektroot eine "Composer.lock" -Datei erstellt. Sie müssen sowohl "Composer.json" als auch "Composer.lock" -Dateien in Ihrem Git -Repository begehen. Schließlich können Sie Ihre Änderungen mit dem Befehl "Git Push Heroku Master" nach Heroku drücken. Heroku installiert automatisch die in Ihrer "Composer.json" -Datei angegebenen PHP -Erweiterungen.

Warum bekomme ich einen Fehler, wenn ich versuche, eine PHP -Erweiterung auf Heroku zu installieren? Ein häufiger Grund ist, dass die von Ihnen zu installierende Erweiterung nicht mit der von Ihnen verwendeten PHP -Version kompatibel ist. Sie können die PHP -Version überprüfen, indem Sie den Befehl "PHP -v" in Ihrem Terminal ausführen. Wenn die Erweiterung nicht mit Ihrer PHP -Version kompatibel ist, müssen Sie entweder Ihre PHP -Version aktualisieren oder eine Version der Erweiterung finden, die mit Ihrer PHP -Version kompatibel ist. Die Erweiterung ist im Pecl -Repository nicht verfügbar. Heroku verwendet das PECL -Repository, um PHP -Erweiterungen zu installieren. Wenn die Erweiterung im PECL -Repository nicht verfügbar ist, können Sie sie nicht auf Heroku installieren. .ini Datei auf Heroku. Dazu müssen Sie eine ".user.ini" -Datei in Ihrem Projektroot erstellen. Diese Datei enthält Ihre benutzerdefinierten PHP -Einstellungen. Wenn Sie beispielsweise die maximale Datei -Upload -Größe erhöhen möchten, sollte Ihre Datei ".user.ini" so aussehen:

upload_max_filesize = 10m
post_max_size = 10m

nach dem Erstellen Die Datei '.user.ini', Sie müssen sie für Ihr Git -Repository verpflichten und Ihre Änderungen an Heroku weitergeben. Heroku wird automatisch die in Ihrer Datei ".user.ini" angegebenen Einstellungen anwenden.

Wie kann ich meine PHP -Version auf Heroku aktualisieren? Zunächst müssen Sie die neue PHP -Version in Ihrer Datei "Composer.json" angeben. Wenn Sie beispielsweise auf PHP 7.4 aktualisieren möchten, sollte Ihre Datei "Composer.json" so aussehen:


{
"Erforderlich": {
"PHP": "^7.4"
}
}

Nach dem Aktualisieren der Datei 'Composer.json' müssen Sie den Befehl 'Composer Update' in Ihrem Terminal ausführen. Dadurch wird die Datei "Composer.lock" aktualisiert. Sie müssen sowohl "Composer.json" als auch "Composer.lock" -Dateien in Ihrem Git -Repository begehen. Schließlich können Sie Ihre Änderungen mit dem Befehl "Git Push Heroku Master" nach Heroku drücken. Heroku wird Ihre PHP -Version automatisch aktualisieren.

Kann ich ein benutzerdefiniertes Buildpack verwenden, um PHP -Erweiterungen auf Heroku zu installieren? Ein Buildpack ist ein Drehbuch, das Heroku ausführt, wenn Sie Ihre Änderungen auf die Plattform drücken. Es ist dafür verantwortlich, die Umgebung Ihrer Anwendung einzurichten und ihre Abhängigkeiten zu installieren. Wenn Sie beispielsweise das "Heroku/Php" Buildpack verwenden möchten, sollte Ihre Datei "app.json" so aussehen:

{
"Buildpacks": [
{
"URL": "Heroku/Php"
}
]
}

Nach Angabe des Buildpack Heroku. Heroku wird automatisch den Buildpack ausführen und die darin angegebenen PHP -Erweiterungen installieren. Aber es gibt einige Strategien, die Sie anwenden können. Zunächst können Sie die Heroku -Protokolle auf alle Fehlermeldungen überprüfen. Sie können auf die Protokolle zugreifen, indem Sie den Befehl "Heroku -Protokolle" in Ihrem Terminal ausführen. Die Protokolle können Ihnen Hinweise darauf geben, was das Problem verursacht. Sie können beispielsweise den Befehl "PHP -M" ausführen, um alle installierten PHP -Erweiterungen aufzulisten. Auf diese Weise können Sie überprüfen, ob eine bestimmte Erweiterung installiert ist oder nicht. Dies kann Ihnen helfen, zu überprüfen, ob Ihre benutzerdefinierten php.ini -Einstellungen angewendet werden oder nicht. PHP -Erweiterungen, die im Pecl -Repository auf Heroku nicht verfügbar sind. Heroku verwendet das PECL -Repository, um PHP -Erweiterungen zu installieren. Wenn die Erweiterung im PECL -Repository nicht verfügbar ist, können Sie sie nicht auf Heroku installieren. Ein benutzerdefiniertes Buildpack kann Skripte enthalten, um PHP -Erweiterungen aus der Quelle zu kompilieren und zu installieren. Dies erfordert erweiterte Kenntnisse über PHP- und UNIX -Shell -Skripte.

Wie kann ich überprüfen, ob eine PHP -Erweiterung auf Heroku installiert ist? Befehl 'PHP -M' in Ihrer Heroku -App. Dieser Befehl listet alle installierten PHP -Erweiterungen auf. Sie können diesen Befehl mit dem Befehl "Heroku Run" in Ihrem Terminal ausführen. Sie können beispielsweise den folgenden Befehl ausführen, um alle installierten PHP -Erweiterungen aufzulisten:

Heroku -Ausführen von PHP -M

Wenn die Erweiterung installiert ist, sollte sie in der Liste der installierten PHP -Erweiterungen angezeigt werden.

Kann ich mehrere PHP -Erweiterungen auf Heroku installieren?

Ja, Sie können mehrere PHP -Erweiterungen auf Heroku installieren. Dazu müssen Sie alle Erweiterungen angeben, die Sie in Ihrer Datei "Composer.json" installieren möchten. Wenn Sie beispielsweise die Erweiterungen "GD" und "Mbstring" installieren möchten, sollte Ihre Datei "Composer.json" so aussehen:

{
"Erforderlich": {
"ext -gd ":"*",
" ext-mbstring ":"*"
}
}

nach dem Aktualisieren der Aktualisierung der "Composer.json" -Datei, Sie müssen den Befehl "Composer Update" in Ihrem Terminal ausführen. Dadurch wird die Datei "Composer.lock" aktualisiert. Sie müssen sowohl "Composer.json" als auch "Composer.lock" -Dateien in Ihrem Git -Repository begehen. Schließlich können Sie Ihre Änderungen mit dem Befehl "Git Push Heroku Master" nach Heroku drücken. Heroku installiert automatisch die in Ihrer Datei 'Composer.json' angegebenen PHP -Erweiterungen. Verwenden Sie die Datei "php.ini", um PHP -Erweiterungen auf Heroku zu installieren. Heroku unterstützt die Datei "Php.ini" nicht zur Installation von PHP -Erweiterungen. Stattdessen müssen Sie die Datei "Composer.json" verwenden, um die von Ihnen installierenden PHP -Erweiterungen anzugeben. Heroku installiert automatisch die in Ihrer "Composer.json" -Datei angegebenen PHP -Erweiterungen, wenn Sie Ihre Änderungen auf die Plattform drücken.

Das obige ist der detaillierte Inhalt vonSo installieren Sie benutzerdefinierte PHP -Erweiterungen auf Heroku. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage