Richten Sie PHP mit den erforderlichen Erweiterungen, der php.ini-Konfiguration, der Code-Coverage-Unterstützung und verschiedenen Tools wie Composer in GitHub Actions ein. Durch diese Aktion erhalten Sie eine plattformübergreifende Schnittstelle zum Einrichten der PHP-Umgebung, die Sie zum Testen Ihrer Anwendung benötigen. Weitere Informationen zur Verwendung finden Sie im Abschnitt „Verwendung“ und in den Beispielen.
Sowohl GitHub-hosted
als auch self-hosted
Läufer werden von setup-php
auf den folgenden Betriebssystemen/Plattformen unterstützt.
Virtuelle Umgebung | YAML-Workflow-Label | Vorinstalliertes PHP |
---|---|---|
Ubuntu 24.04 | ubuntu-24.04 | PHP 8.3 |
Ubuntu 22.04 | ubuntu-latest oder ubuntu-22.04 | PHP 8.1 |
Ubuntu 20.04 | ubuntu-20.04 | PHP 7.4 bis PHP 8.3 |
Windows Server 2022 | windows-latest oder windows-2022 | PHP 8.3 |
Windows Server 2019 | windows-2019 | PHP 8.3 |
macOS Sequoia 15.x | macos-15 | - |
macOS Sonoma 14.x | macos-latest oder macos-14 | - |
macOS Ventura 13.x | macos-13 | PHP 8.3 |
Host-Betriebssystem/virtuelle Umgebung | YAML-Workflow-Label |
---|---|
Ubuntu 24.04 | self-hosted oder Linux |
Ubuntu 22.04 | self-hosted oder Linux |
Ubuntu 20.04 | self-hosted oder Linux |
Debian 12 | self-hosted oder Linux |
Debian 11 | self-hosted oder Linux |
Windows 7 und neuer | self-hosted oder Windows |
Windows Server 2012 R2 und neuer | self-hosted oder Windows |
macOS Sequoia 15.x x86_64/arm64 | self-hosted oder macOS |
macOS Sonoma 14.x x86_64/arm64 | self-hosted oder macOS |
macOS Ventura 13.x x86_64/arm64 | self-hosted oder macOS |
setup-php
zu dieser, andernfalls installiert es die PHP-Version. Auf allen unterstützten Betriebssystemen/Plattformen können je nach Läufer die folgenden PHP-Versionen eingerichtet werden.
PHP-Version | Stabilität | Release-Unterstützung | Läuferunterstützung |
---|---|---|---|
5.3 | Stable | End of life | GitHub-hosted |
5.4 | Stable | End of life | GitHub-hosted |
5.5 | Stable | End of life | GitHub-hosted |
5.6 | Stable | End of life | GitHub-hosted , self-hosted |
7.0 | Stable | End of life | GitHub-hosted , self-hosted |
7.1 | Stable | End of life | GitHub-hosted , self-hosted |
7.2 | Stable | End of life | GitHub-hosted , self-hosted |
7.3 | Stable | End of life | GitHub-hosted , self-hosted |
7.4 | Stable | End of life | GitHub-hosted , self-hosted |
8.0 | Stable | End of life | GitHub-hosted , self-hosted |
8.1 | Stable | Security fixes only | GitHub-hosted , self-hosted |
8.2 | Stable | Active | GitHub-hosted , self-hosted |
8.3 | Stable | Active | GitHub-hosted , self-hosted |
8.4 | Stable | Active | GitHub-hosted , self-hosted |
8.5 | Nightly | In development | GitHub-hosted , self-hosted |
Hinweise:
8.5
in php-version
-Eingabe wird ein nächtlicher Build von PHP 8.5.0-dev
installiert. Weitere Informationen finden Sie unter Nightly Build Setup.PHP 8.0
und höher finden Sie im Abschnitt zur JIT-Konfiguration. PHP-Erweiterungen können über den extensions
eingerichtet werden. Es akzeptiert eine string
im CSV-Format.
Ubuntu
können Erweiterungen eingerichtet werden, die als Paket, auf PECL
oder einem Git-Repository verfügbar sind. - name : Setup PHP with PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : imagick, swoole
Unter Windows
können auf PECL
verfügbare Erweiterungen eingerichtet werden, die über die DLL
Binärdatei verfügen.
Unter macOS
können auf PECL
oder einem Git-Repository verfügbare Erweiterungen eingerichtet werden.
Befolgen Sie unter Ubuntu
und macOS
diese Anleitung, um eine Erweiterung aus einem Git-Repository zu kompilieren und zu installieren.
Erweiterungen, die zusammen mit PHP installiert werden, sofern angegeben, sind aktiviert.
Bestimmte Versionen von auf PECL
verfügbaren Erweiterungen können eingerichtet werden, indem dem Namen der Erweiterung die Version angehängt wird. Dies ist nützlich für die Installation alter Versionen von Erweiterungen, die veraltete PHP-Versionen unterstützen.
- name : Setup PHP with specific version of PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 5.4 '
extensions : swoole-1.9.3
PECL
verfügbar sind, können eingerichtet werden, indem dem Namen der Erweiterung ihr Status angehängt wird, z. B. alpha
, beta
, devel
oder snapshot
. - name : Setup PHP with pre-release PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : xdebug-beta
Befolgen Sie unter Ubuntu
und macOS
diese Anleitung, um eine Erweiterung von PECL mit Bibliotheken oder benutzerdefinierter Konfiguration zu kompilieren und zu installieren.
Geteilte Erweiterungen können deaktiviert werden, indem ihnen ein :
vorangestellt wird. Alle von der angegebenen Erweiterung abhängigen Erweiterungen werden ebenfalls deaktiviert.
- name : Setup PHP and disable opcache
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : :opcache
none
deaktiviert werden. Wenn none
zusammen mit anderen Erweiterungen angegeben wird, wird sie an den Anfang der Eingabe gehoben. Daher werden zuerst alle freigegebenen Erweiterungen deaktiviert, dann werden die restlichen Erweiterungen in der Eingabe verarbeitet. Hinweis: Dadurch werden alle gemeinsamen Kern- und Drittanbietererweiterungen deaktiviert und können daher einige Tools beschädigen, die sie benötigen. Erforderliche Erweiterungen werden wieder aktiviert, wenn die Tools auf Best-Effort-Basis eingerichtet werden. Daher wird empfohlen, die für Ihre Tools erforderlichen Erweiterungen nach none
in der extensions
hinzuzufügen, um Probleme zu vermeiden.
- name : Setup PHP without any shared extensions except mbstring
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : none, mbstring
intl
kann mit einer bestimmten ICU
Version für PHP 5.6
und höher in Ubuntu
-Workflows eingerichtet werden, indem intl
die ICU
Version angehängt wird. ICU 50.2
und neuere Versionen werden unterstützt. Die spezifischen unterstützten Versionen finden Sie in ICU builds
. - name : Setup PHP with intl
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : intl-70.1
Erweiterungen, die standardmäßig geladen werden, nachdem setup-php
ausgeführt wird, finden Sie im Wiki.
Diese Erweiterungen bieten benutzerdefinierte Unterstützung:
cubrid
und pdo_cubrid
auf Ubuntu
.event
, gearman
, geos
und relay
auf Ubuntu
und macOS
.blackfire
, couchbase
, ioncube
, oci8
, pdo_firebird
, pdo_oci
, pecl_http
, phalcon3
, phalcon4
, phalcon5
und zephir_parser
auf allen unterstützten Betriebssystemen. Standardmäßig hinterlassen Erweiterungen, die nicht ordnungsgemäß hinzugefügt oder deaktiviert werden können, eine Fehlermeldung in den Protokollen. Die Ausführung wird nicht unterbrochen. Um dieses Verhalten zu ändern, können Sie fail-fast
Flag auf true
setzen.
- name : Setup PHP with fail-fast
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : oci8
env :
fail-fast : true
Diese Tools können über die tools
-Eingabe global eingerichtet werden. Es akzeptiert eine Zeichenfolge im CSV-Format.
behat
, blackfire
, blackfire-player
, box
, castor
, churn
, codeception
, composer
, composer-dependency-analyser
, composer-normalize
, composer-prefetcher
, composer-require-checker
, composer-unused
, cs2pr
, deployer
, ecs
, flex
, grpc_php_plugin
, infection
, parallel-lint
, pecl
, phan
, phing
, phinx
, phive
, php-config
, php-cs-fixer
, php-scoper
, phpcbf
, phpcpd
, phpcs
, phpdoc
oder phpDocumentor
, phpize
, phplint
, phpmd
, phpspec
, phpstan
, phpunit
, phpunit-bridge
, phpunit-polyfills
, pint
, prestissimo
, protoc
, psalm
, rector
, symfony
oder symfony-cli
, vapor
oder vapor-cli
, wp
oder wp-cli
- name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : php-cs-fixer, phpunit
vendor/package
entsprechend der Auflistung auf Packagist angegeben wird. Dieses Format akzeptiert die gleichen Versionseinschränkungen wie composer
. - name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : vimeo/psalm
Um eine bestimmte Version eines Tools einzurichten, geben Sie diese im Formular tool:version
an.
Die Version kann im folgenden Format vorliegen:
tool:1.2.3
oder tool:1.2.3-beta1
.tool:1
oder tool:1.x
.tool:1.2
oder tool:1.2.x
. Wenn Sie nur die Hauptversion oder die Version im Format major.minor
angeben, wird die neueste Patch-Version eingerichtet, die der Eingabe entspricht.
Mit Ausnahme der Hauptversionen von composer
können Sie durch die GitHub-API eine Ratenbegrenzung erhalten, wenn Sie für ein Tool nur die major
oder die Version im Format major.minor
angeben. Um dies zu vermeiden, wird empfohlen, ein GitHub
OAuth-Token bereitzustellen. Sie können dies tun, indem Sie die Umgebungsvariable GITHUB_TOKEN
festlegen. Die Umgebungsvariable COMPOSER_TOKEN
wurde zugunsten von GITHUB_TOKEN
veraltet und wird in der nächsten Hauptversion entfernt.
- name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : php-cs-fixer:3.64, phpunit:11.4
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
composer
eingerichtet. Sie können die erforderliche composer
Version einrichten, indem Sie die Hauptversion v1
oder v2
oder die Version im Format major.minor
oder semver
angeben. Darüber hinaus können für Composer auch snapshot
und preview
angegeben werden, um die jeweiligen Releases einzurichten. - name : Setup PHP with composer v2
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : composer:v2
tools: none
angeben, um es zu überspringen. - name : Setup PHP without composer
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : none
Die Tools pear
, pecl
, phpize
und php-config
sind standardmäßig für alle unterstützten PHP-Versionen unter Linux und macOS eingerichtet.
Die neueste Version der blackfire
CLI wird eingerichtet, wenn blackfire
in der Tools-Eingabe angegeben wird. Weitere Informationen zur Verwendung blackfire
mit GitHub-Aktionen finden Sie in der offiziellen Dokumentation.
Tools prestissimo
und composer-prefetcher
werden übersprungen, es sei denn composer:v1
ist auch in der Tools-Eingabe angegeben. Es wird empfohlen, prestissimo
aufzugeben und composer v2
zu verwenden.
Standardmäßig wird die Ausführung nicht unterbrochen, außer composer
-Tools, die nicht ordnungsgemäß eingerichtet werden können und eine Fehlermeldung in den Protokollen hinterlassen. Um dieses Verhalten zu ändern, können Sie fail-fast
Flag auf true
setzen.
- name : Setup PHP with fail-fast
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : deployer
env :
fail-fast : true
Notizen
tools
sind nützlich, um Tools einzurichten, die nur in CI-Workflows verwendet werden, und sorgen so für Ordnung in Ihrer composer.json
.--no-dev
ausführen und die erforderlichen Tools mithilfe tools
Eingabe installieren, um Ihren Workflow zu beschleunigen.COMPOSER_NO_INTERACTION
auf 1
und COMPOSER_PROCESS_TIMEOUT
auf 0
gesetzt. Das bedeutet im Endeffekt, dass Composer-Befehle in Ihren Skripts nicht die Angabe --no-interaction
erfordern.COMPOSER_NO_AUDIT
auf 1
gesetzt. Wenn Sie also Ihre Abhängigkeiten auf Sicherheitslücken prüfen möchten, empfiehlt es sich, vor der Installation einen composer audit
Prüfschritt hinzuzufügen.COMPOSER_PROCESS_TIMEOUT
festlegen möchten, können Sie ihn in Ihrer Workflow-Datei mit dem Schlüsselwort env
festlegen. - name : Setup PHP with composer and custom process timeout
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
COMPOSER_PROCESS_TIMEOUT : 300
Geben Sie coverage: xdebug
an, um Xdebug
zu verwenden und PCOV
zu deaktivieren.
Läuft auf allen unterstützten PHP-Versionen.
- name : Setup PHP with Xdebug
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : xdebug
coverage: xdebug
angeben, wird standardmäßig die neueste Version von Xdebug eingerichtet, die mit der PHP-Version kompatibel ist.coverage: xdebug2
. - name : Setup PHP with Xdebug 2.x
uses : shivammathur/setup-php@v2
with :
php-version : ' 7.4 '
coverage : xdebug2
Hinweis : Xdebug ist auf Ubuntu GitHub Actions-Bildern standardmäßig aktiviert. Wenn Sie es also nicht in Ihrem Workflow verwenden, wird empfohlen, es zu deaktivieren, da sich dies positiv auf Ihre PHP-Leistung auswirkt. Weitere Informationen finden Sie im Abschnitt „Abdeckung deaktivieren“.
Geben Sie coverage: pcov
an, um PCOV
zu verwenden und Xdebug
zu deaktivieren.
Läuft auf PHP 7.1 und neueren PHP-Versionen.
src
, lib
oder app
ist, geben Sie pcov.directory
mithilfe der ini-values
-Eingabe an. - name : Setup PHP with PCOV
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
ini-values : pcov.directory=api # optional, see above for usage.
coverage : pcov
pcov/clobber
einrichten, bevor Sie Ihre Tests ausführen. - name : Setup PCOV
run : |
composer require pcov/clobber
vendor/bin/pcov clobber
Geben Sie coverage: none
an, um sowohl Xdebug
als auch PCOV
zu deaktivieren.
Deaktivieren Sie den Versicherungsschutz aus folgenden Gründen:
phpdbg
zum Ausführen Ihrer Tests.blackfire
.- name : Setup PHP with no coverage driver
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : none
Geben Sie die Verwendung des Schlüsselworts
with
an
php-version
(optional)string
. Zum Beispiel '8.4'
.lowest
um die niedrigste unterstützte PHP-Version einzurichten.highest
oder latest
, um die neueste stabile PHP-Version einzurichten.nightly
um einen Nightly-Build aus dem Master-Zweig von PHP einzurichten.dx
, wobei d
die Hauptversion ist. Zum Beispiel 5.x
, 7.x
und 8.x
php-version-file
falls vorhandencomposer.lock
Datei und den Wert platform-overrides.php
composer.json
Datei und der Wert config.platform.php
php-version-file
(optional)string
. Zum Beispiel '.phpenv-version'
..php-version
verwendet..php-version
nicht gefunden wird, wird die neueste stabile PHP-Version eingerichtet. extensions
(optional)string
im CSV-Format. Zum Beispiel mbstring, :opcache
.none
, um alle freigegebenen Erweiterungen zu deaktivieren.:
sind deaktiviert.ini-file
(optional)php.ini
an.production
, development
oder none
.php.ini
verwendet. ini-values
(optional)php.ini
hinzufügen möchten.string
im CSV-Format. Zum Beispiel post_max_size=256M, max_execution_time=180
.xdebug.mode="develop,coverage"
. coverage
(optional)xdebug
, pcov
oder none
.tools
(optional)string
im CSV-Format. Zum Beispiel: phpunit, phpcs
php-version
Auf GitHub Actions können Sie dem Schritt setup-php
eine id
zuweisen. Sie können diese verwenden, um die Ausgaben in einem späteren Schritt abzurufen.
- name : Setup PHP
id : setup-php
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
- name : Print PHP version
run : echo ${{ steps.setup-php.outputs.php-version }}
Geben Sie es mit dem Schlüsselwort
env
an
fail-fast
(optional)false
gesetzt.true
und false
. phpts
(optional)nts
für nicht-threadsicher und zts
oder ts
für threadsicher.nts
eingestellt.update
(optional)true
und false
.false
gesetzt.Weitere Informationen finden Sie weiter unten.
Richten Sie eine bestimmte PHP-Version ein.
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : mbstring, intl
ini-values : post_max_size=256M, max_execution_time=180
coverage : xdebug
tools : php-cs-fixer, phpunit
Richten Sie mehrere PHP-Versionen auf mehreren Betriebssystemen ein.
jobs :
run :
runs-on : ${{ matrix.operating-system }}
strategy :
matrix :
operating-system : ['ubuntu-latest', 'windows-latest', 'macos-latest']
php-versions : ['8.2', '8.3', '8.4']
phpunit-versions : ['latest']
include :
- operating-system : ' ubuntu-latest '
php-versions : ' 8.1 '
phpunit-versions : 10
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ${{ matrix.php-versions }}
extensions : mbstring, intl
ini-values : post_max_size=256M, max_execution_time=180
coverage : xdebug
tools : php-cs-fixer, phpunit:${{ matrix.phpunit-versions }}
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
Richten Sie einen nächtlichen Build von
PHP 8.5
ein.
steps :
- name : Setup nightly PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.5 '
extensions : mbstring
ini-values : post_max_size=256M, max_execution_time=180
coverage : xdebug
tools : php-cs-fixer, phpunit
Richten Sie einen PHP-Build mit Debugging-Symbolen ein.
debug
Umgebungsvariable verwenden, um einen Build mit Debugging-Symbolen für PHP 5.6 und höher einzurichten.Notizen
/usr/lib/debug/.build-id
hinzugefügt. Diese Dateien stimmen mit der build-id
im ELF-Abschnitt der PHP-Binärdateien überein und Debugging-Tools wie gdb
sind in der Lage, die Symbole aus diesen Dateien aufzulösen.pdb
Dateien im PHP-Installationsverzeichnis hinzugefügt. steps :
- name : Setup PHP with debugging symbols
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
debug : true # specify true or false
Richten Sie
TS
oderNTS
PHP ein.
NTS
Versionen sind standardmäßig eingerichtet. jobs :
run :
runs-on : [ubuntu-latest, windows-latest, macos-latest]
name : Setup PHP TS
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
phpts : ts # specify ts or nts
Aktualisieren Sie auf den neuesten Patch der PHP-Versionen.
ppa:ondrej/php
in der Ubuntu GitHub-Umgebung fehlt, wird die PHP-Version auf die neueste Patch-Version aktualisiert.update
Umgebungsvariable auf true
festlegen, um auf die neueste Version zu aktualisieren. - name : Setup PHP with latest versions
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
update : true # specify true or false
Debuggen Sie Ihren Workflow
Um etwaige Probleme zu beheben, können Sie das Tag verbose
anstelle von v2
verwenden.
- name : Setup PHP with logs
uses : shivammathur/setup-php@verbose
with :
php-version : ' 8.4 '
Richten Sie PHP auf mehreren Architekturen auf Ubuntu GitHub Runners ein.
PHP 5.6
bis PHP 8.4
werden von setup-php
auf mehreren Architekturen unter Ubuntu
unterstützt.shivammathur/node
-Bilder als Container verwenden. Diese haben kompatible Nodejs
für setup-php
installiert.ARM
basierte Einrichtung selbstgehostete Läufer. jobs :
run :
runs-on : ubuntu-latest
container : shivammathur/node:latest-${{ matrix.arch }}
strategy :
matrix :
arch : ["amd64", "i386"]
steps :
- name : Install PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
Richten Sie PHP auf einem selbst gehosteten Läufer ein.
Informationen zum Einrichten eines selbstgehosteten Container-Runners finden Sie in den folgenden Anleitungen für Ihr Basisbetriebssystem.
Um den Runner direkt auf dem Host-Betriebssystem oder in einer virtuellen Maschine einzurichten, befolgen Sie diese Anforderungsanleitung, bevor Sie den selbstgehosteten Runner einrichten.
Wenn Ihr Workflow Dienstcontainer verwendet, richten Sie den Runner auf einem Linux-Host oder in einer virtuellen Linux-Maschine ein. GitHub Actions unterstützt keine verschachtelte Virtualisierung unter Linux, daher funktionieren Dienste nicht in einem Docker-Container.
Es wird empfohlen, für selbstgehostete Umgebungen die Umgebungsvariable runner
mit dem Wert self-hosted
anzugeben.
jobs :
run :
runs-on : self-hosted
strategy :
matrix :
php-versions : ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
name : PHP ${{ matrix.php-versions }}
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ${{ matrix.php-versions }}
env :
runner : self-hosted
Notizen
self-hosted
Läufer, die von auf GitHub-hosted
Läufern verwendet werden.Testen Sie Ihren
Ubuntu
-Workflow lokal mitnektos/act
.
jobs :
run :
runs-on : ubuntu-latest
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
Führen Sie den Workflow lokal mit act
unter Verwendung von shivammathur/node
docker images aus.
Wählen Sie das Bild-Tag aus, das der runs-on
Eigenschaft in Ihrem Workflow entspricht. Wenn Sie beispielsweise ubuntu-20.04
in Ihrem Workflow verwenden, führen Sie act -P ubuntu-20.04=shivammathur/node:2004
aus.
# For runs-on: ubuntu-latest
act -P ubuntu-latest=shivammathur/node:latest
# For runs-on: ubuntu-24.04
act -P ubuntu-24.04=shivammathur/node:2404
# For runs-on: ubuntu-22.04
act -P ubuntu-22.04=shivammathur/node:2204
# For runs-on: ubuntu-20.04
act -P ubuntu-20.04=shivammathur/node:2004
Aktivieren Sie Just-in-Time (JIT) auf PHP 8.0 und höher.
opcache
im CLI-Modus, indem Sie opcache.enable_cli=1
festlegen.Xdebug
, PCOV
und anderen Erweiterungen, die die Funktion zend_execute_ex
überschreiben. Legen Sie daher coverage: none
und deaktivieren Sie jede solche Erweiterung, falls hinzugefügt.opcache.jit=1235
und opcache.jit_buffer_size=256M
eingestellt, die über die Eingabe ini-values
geändert werden können.official PHP documentation
. Zum Beispiel, um JIT im tracing
-Modus mit einer Puffergröße von 64 MB
zu aktivieren.
- name : Setup PHP with JIT in tracing mode
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : none
ini-values : opcache.enable_cli=1, opcache.jit=tracing, opcache.jit_buffer_size=64M
Sie können PHP-Erweiterungen mit shivammathur/cache-extensions
und action/cache
GitHub Actions zwischenspeichern. Erweiterungen, deren Einrichtung im Cache sehr lange dauert, stehen beim nächsten Workflow-Lauf zur Verfügung und werden direkt aktiviert. Dies reduziert die Ausführungszeit des Workflows.
Weitere Informationen finden Sie unter shivammathur/cache-extensions
.
Wenn Ihr Projekt Composer verwendet, können Sie das interne Cache-Verzeichnis des Composers beibehalten. Zwischengespeicherte Abhängigkeiten werden direkt geladen, anstatt sie während der Installation herunterzuladen. Die zwischengespeicherten Dateien stehen über Prüfläufe hinweg zur Verfügung und verkürzen die Ausführungszeit des Workflows.
- name : Get composer cache directory
id : composer-cache
run : echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name : Cache dependencies
uses : actions/cache@v4
with :
path : ${{ steps.composer-cache.outputs.dir }}
key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys : ${{ runner.os }}-composer-
- name : Install dependencies
run : composer install --prefer-dist
Notizen
vendor
nicht mit action/cache
zwischen, da dies Nebenwirkungen haben kann.composer.lock
nicht festschreiben, können Sie den Hash von composer.json
als Schlüssel für Ihren Cache verwenden. key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
composer
Abhängigkeiten unterstützen und die Optionen prefer-lowest
und prefer-stable
verwenden, können Sie diese in Ihrer Matrix speichern und zu den Schlüsseln hinzufügen. key : ${{ runner.os }}-composer-${{ matrix.prefer }}-${{ hashFiles('**/composer.lock') }}
restore-keys : ${{ runner.os }}-composer-${{ matrix.prefer }}-
Wenn Sie über eine Reihe von Workflows verfügen, die mehrere Tools einrichten oder viele Composer-Abhängigkeiten haben, stoßen Sie möglicherweise an die Ratenbegrenzung von GitHub für Composer. Wenn Sie außerdem nur die Hauptversion oder die Version im Format major.minor
angeben, können Sie die Ratenbegrenzung erreichen. Um dies zu vermeiden, können Sie ein OAuth
Token angeben, indem Sie die Umgebungsvariable GITHUB_TOKEN
festlegen. Zu diesem Zweck können Sie das Geheimnis GITHUB_TOKEN
verwenden.
Die Umgebungsvariable COMPOSER_TOKEN
wurde zugunsten von GITHUB_TOKEN
veraltet und wird in der nächsten Hauptversion entfernt.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
Wenn Sie Private Packagist für Ihre privaten Composer-Abhängigkeiten verwenden, können Sie die Umgebungsvariable PACKAGIST_TOKEN
auf Authentifizierung festlegen.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
PACKAGIST_TOKEN : ${{ secrets.PACKAGIST_TOKEN }}
Wenn Sie private Repositorys, die anderswo gehostet werden, zusätzlich zu GitHub oder Private Packagist authentifizieren möchten, können Sie die Umgebungsvariable COMPOSER_AUTH_JSON
mit den Authentifizierungsmethoden und den Anmeldeinformationen im JSON-Format festlegen. Weitere Einzelheiten finden Sie im Abschnitt zur Authentifizierung in composer documentation
.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
COMPOSER_AUTH_JSON : |
{
"http-basic": {
"example.org": {
"username": "${{ secrets.EXAMPLE_ORG_USERNAME }}",
"password": "${{ secrets.EXAMPLE_ORG_PASSWORD }}"
}
}
}
Wenn Sie in Ihrem Workflow mehrere Zeilen PHP-Code ausführen müssen, können Sie dies problemlos tun, ohne ihn in einer Datei zu speichern.
Fügen Sie den Code in die run-Eigenschaft eines Schritts ein und geben Sie die Shell als php {0}
an.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
- name : Run PHP code
shell : php {0}
run : |
<?php
$welcome = "Hello, world";
echo $welcome;
Problem-Matcher sind json
-Konfigurationen, die Fehler und Warnungen in Ihren Protokollen identifizieren und sie in der GitHub Actions-Benutzeroberfläche deutlich sichtbar machen, indem sie sie hervorheben und Codeanmerkungen erstellen.
Richten Sie Problem-Matcher für Ihre PHP
Ausgabe ein, indem Sie diesen Schritt nach dem Schritt setup-php
hinzufügen.
- name : Setup problem matchers for PHP
run : echo "::add-matcher::${{ runner.tool_cache }}/php.json"
Richten Sie Problem-Matcher für Ihre PHPUnit
Ausgabe ein, indem Sie diesen Schritt nach dem Schritt setup-php
hinzufügen.
- name : Setup problem matchers for PHPUnit
run : echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
PHPStan unterstützt die Fehlerberichterstattung in GitHub-Aktionen, sodass keine Problem-Matcher erforderlich sind.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : phpstan
- name : Run PHPStan
run : phpstan analyse src
Psalm unterstützt die Fehlerberichterstattung in GitHub-Aktionen mit einem Ausgabeformat github
.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : psalm
- name : Run Psalm
run : psalm --output-format=github
Für Tools, die checkstyle
Berichte unterstützen, wie phpstan
, psalm
, php-cs-fixer
und phpcs
können Sie cs2pr
verwenden, um Ihren Code mit Anmerkungen zu versehen.
Beispiele finden Sie in der cs2pr-Dokumentation.
Hier ist ein Beispiel mit
phpcs
.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : cs2pr, phpcs
- name : Run phpcs
run : phpcs -q --report=checkstyle src | cs2pr
Beispiele für die Verwendung von setup-php
mit verschiedenen PHP-Frameworks und -Paketen.
Framework/Paket | Läuft weiter | Arbeitsablauf |
---|---|---|
Schwarzfeuer | macOS , ubuntu und windows | blackfire.yml |
Blackfire-Spieler | macOS , ubuntu und windows | blackfire-player.yml |
CakePHP mit MySQL und Redis | ubuntu | cakephp-mysql.yml |
CakePHP mit PostgreSQL und Redis | ubuntu | cakephp-postgres.yml |
CakePHP ohne Dienste | macOS , ubuntu und windows | cakephp.yml |
CodeIgniter | macOS , ubuntu und windows | codeigniter.yml |
Lamellen MVC | macOS , ubuntu und windows | laminas-mvc.yml |
Laravel mit MySQL und Redis | ubuntu | laravel-mysql.yml |
Laravel mit PostgreSQL und Redis | ubuntu | laravel-postgres.yml |
Laravel ohne Dienste | macOS , ubuntu und windows | laravel.yml |
Lumen mit MySQL und Redis | ubuntu | lumen-mysql.yml |
Lumen mit PostgreSQL und Redis | ubuntu | lumen-postgres.yml |
Lumen ohne Dienstleistungen | macOS , ubuntu und windows | lumen.yml |
Phalcon mit MySQL | ubuntu | phalcon-mysql.yml |
Phalcon mit PostgreSQL | ubuntu | phalcon-postgres.yml |
Wurzeln/Grundgestein | ubuntu | bedrock.yml |
Wurzeln/Salbei | ubuntu | sage.yml |
Schlanker Rahmen | macOS , ubuntu und windows | slim-framework.yml |
Symfony mit MySQL | ubuntu | symfony-mysql.yml |
Symfony mit PostgreSQL | ubuntu | symfony-postgres.yml |
Symfony ohne Dienste | macOS , ubuntu und windows | symfony.yml |
Yii2 Starter Kit mit MySQL | ubuntu | yii2-mysql.yml |
Yii2 Starter Kit mit PostgreSQL | ubuntu | yii2-postgres.yml |
v2
-Tag als setup-php
Version. Es ist ein rollierendes Tag und wird mit den neuesten Neben- und Patch-Releases synchronisiert. Mit v2
erhalten Sie automatisch Fehlerbehebungen, Sicherheitspatches, neue Funktionen und Unterstützung für die neuesten PHP-Versionen.verbose
-Tag verwendet werden. Es gibt alle Protokolle aus und wird auch mit den neuesten Versionen synchronisiert.main
als Version zu verwenden, da dies Ihren Arbeitsablauf nach Hauptversionen unterbrechen könnte, da diese wichtige Änderungen beinhalten.v1
Tag oder eine 1.xy
Version verwenden, sollten Sie zu v2 wechseln, da v1
nicht mehr unterstützt wird. setup-php
ist eine abgeleitete Arbeit des php.net-Logos und steht unter der CC BY-SA 4.0-Lizenz. Beiträge sind willkommen!
Mitwirkende von setup-php
und anderen verwandten Projekten
setup-php
mit.Viele Benutzer und Organisationen unterstützen setup-php über GitHub-Sponsoren.
Diese Unternehmen stellen setup-php großzügig ihre Produkte und Dienstleistungen zur Verfügung, um die Entwicklung dieses Projekts zu unterstützen.