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.3PECL 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 : :opcachenone 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, mbstringintl 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, phpunitvendor/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:v2tools: 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 : trueNotizen
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 : xdebugcoverage: 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 : xdebug2Hinweis : 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 : pcovpcov/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
withan
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.xphp-version-file falls vorhandencomposer.lock Datei und den Wert platform-overrides.phpcomposer.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, phpcsphp-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
envan
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, phpunitRichten 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.5ein.
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, phpunitRichten 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 falseRichten Sie
TSoderNTSPHP 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 ntsAktualisieren 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 falseDebuggen 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-hostedNotizen
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:2004Aktivieren 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-distNotizen
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.