필수 확장, php.ini 구성, 코드 적용 범위 지원 및 GitHub Actions의 작곡가와 같은 다양한 도구를 사용하여 PHP를 설정하세요. 이 작업은 애플리케이션을 테스트하는 데 필요한 PHP 환경을 설정하기 위한 크로스 플랫폼 인터페이스를 제공합니다. 이를 사용하는 방법을 보려면 사용법 섹션과 예제를 참조하세요.
GitHub-hosted
및 self-hosted
Runner는 모두 다음 OS/플랫폼의 setup-php
에서 지원됩니다.
가상 환경 | YAML 워크플로 라벨 | 사전 설치된 PHP |
---|---|---|
우분투 24.04 | ubuntu-24.04 | PHP 8.3 |
우분투 22.04 | ubuntu-latest 또는 ubuntu-22.04 | PHP 8.1 |
우분투 20.04 | ubuntu-20.04 | PHP 7.4 에서 PHP 8.3 으로 |
윈도우 서버 2022 | windows-latest 또는 windows-2022 | PHP 8.3 |
윈도우 서버 2019 | windows-2019 | PHP 8.3 |
macOS 세쿼이아 15.x | macos-15 | - |
macOS 소노마 14.x | macos-latest 또는 macos-14 | - |
macOS 벤츄라 13.x | macos-13 | PHP 8.3 |
호스트OS/가상환경 | YAML 워크플로 라벨 |
---|---|
우분투 24.04 | self-hosted 또는 Linux |
우분투 22.04 | self-hosted 또는 Linux |
우분투 20.04 | self-hosted 또는 Linux |
데비안 12 | self-hosted 또는 Linux |
데비안 11 | self-hosted 또는 Linux |
Windows 7 이상 | self-hosted 또는 Windows |
Windows Server 2012 R2 이상 | self-hosted 또는 Windows |
macOS Sequoia 15.x x86_64/arm64 | self-hosted 또는 macOS |
macOS 소노마 14.x x86_64/arm64 | self-hosted 또는 macOS |
macOS 벤츄라 13.x x86_64/arm64 | self-hosted 또는 macOS |
setup-php
해당 버전으로 전환하고, 그렇지 않으면 PHP 버전을 설치합니다. 지원되는 모든 OS/플랫폼에서 실행기에 따라 다음 PHP 버전을 설정할 수 있습니다.
PHP 버전 | 안정 | 릴리스 지원 | 러너 지원 |
---|---|---|---|
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 |
참고:
php-version
입력에 8.5
지정하면 PHP 8.5.0-dev
의 야간 빌드가 설치됩니다. 자세한 내용은 야간 빌드 설정을 참조하세요.PHP 8.0
이상에서 JIT를 사용하려면 JIT 구성 섹션을 참조하세요. PHP 확장은 extensions
입력을 사용하여 설정할 수 있습니다. csv 형식의 string
허용합니다.
Ubuntu
에서는 패키지로 사용 가능하고 PECL
또는 git 저장소에서 사용 가능한 확장을 설정할 수 있습니다. - name : Setup PHP with PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : imagick, swoole
Windows
에서는 DLL
바이너리가 있는 PECL
에서 사용 가능한 확장을 설정할 수 있습니다.
macOS
에서는 PECL
또는 git 저장소에서 사용 가능한 확장을 설정할 수 있습니다.
Ubuntu
및 macOS
의 경우 git 리포지토리에서 확장을 컴파일하고 설치하려면 이 가이드를 따르세요.
지정된 경우 PHP와 함께 설치된 확장이 활성화됩니다.
PECL
에서 사용할 수 있는 특정 확장 버전은 확장 이름 뒤에 버전을 추가하여 설정할 수 있습니다. 이는 수명이 다한 PHP 버전을 지원하는 이전 버전의 확장을 설치하는 데 유용합니다.
- 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
에서 사용할 수 있는 시험판 버전의 확장은 확장 이름 뒤에 해당 상태(예: alpha
, beta
, devel
또는 snapshot
를 추가하여 설정할 수 있습니다. - name : Setup PHP with pre-release PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : xdebug-beta
Ubuntu
및 macOS
에서 라이브러리 또는 사용자 정의 구성을 사용하여 PECL에서 확장을 컴파일하고 설치하려면 이 가이드를 따르세요.
공유 확장 프로그램은 접두사로 :
을 붙여 비활성화할 수 있습니다. 지정된 확장에 따른 모든 확장도 비활성화됩니다.
- name : Setup PHP and disable opcache
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : :opcache
none
지정하면 모든 공유 확장 프로그램을 비활성화할 수 있습니다. 다른 확장과 함께 none
지정되지 않으면 입력 시작 부분으로 끌어올려집니다. 따라서 모든 공유 확장이 먼저 비활성화된 다음 입력의 나머지 확장이 처리됩니다. 참고: 이렇게 하면 모든 핵심 및 타사 공유 확장이 비활성화되므로 이를 필요로 하는 일부 도구가 중단될 수 있습니다. 도구가 최선의 방법으로 설정되면 필수 확장이 다시 활성화됩니다. 따라서 문제를 방지하려면 extensions
입력에 none
이후에 도구에 필요한 확장을 추가하는 것이 좋습니다.
- name : Setup PHP without any shared extensions except mbstring
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : none, mbstring
intl
뒤에 ICU
버전을 추가하면 Ubuntu
워크플로에서 PHP 5.6
이상용 특정 ICU
버전으로 확장 intl
을 설정할 수 있습니다. ICU 50.2
및 최신 버전이 지원됩니다. 지원되는 특정 버전은 ICU builds
를 참조하세요. - name : Setup PHP with intl
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : intl-70.1
setup-php
실행 후 기본적으로 로드되는 확장 기능은 위키에서 찾을 수 있습니다.
이러한 확장에는 맞춤 지원이 있습니다.
Ubuntu
의 cubrid
및 pdo_cubrid
.Ubuntu
및 macOS
의 event
, gearman
, geos
및 relay
.blackfire
, couchbase
, ioncube
, oci8
, pdo_firebird
, pdo_oci
, pecl_http
, phalcon3
, phalcon4
, phalcon5
및 zephir_parser
. 기본적으로 추가하거나 비활성화할 수 없는 확장은 로그에 오류 메시지를 남기고 실행은 중단되지 않습니다. 이 동작을 변경하려면 fail-fast
플래그를 true
로 설정할 수 있습니다.
- name : Setup PHP with fail-fast
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : oci8
env :
fail-fast : true
이러한 도구는 tools
입력을 사용하여 전역적으로 설정할 수 있습니다. csv 형식의 문자열을 허용합니다.
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
또는 phpDocumentor
, phpize
, phplint
, phpmd
, phpspec
, phpstan
, phpunit
, phpunit-bridge
, phpunit-polyfills
, pint
, prestissimo
, protoc
, psalm
, rector
, symfony
또는 symfony-cli
, vapor
또는 vapor-cli
, wp
또는 wp-cli
- name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : php-cs-fixer, phpunit
vendor/package
로 지정하여 전역적으로 설정할 수도 있습니다. 이 형식은 composer
와 동일한 버전 제약 조건을 허용합니다. - name : Setup PHP with tools
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : vimeo/psalm
특정 버전의 도구를 설정하려면 tool:version
형식으로 지정하세요.
버전은 다음 형식일 수 있습니다.
tool:1.2.3
또는 tool:1.2.3-beta1
입니다.tool:1
또는 tool:1.x
입니다.tool:1.2
또는 tool:1.2.x
입니다. 메이저 버전만 지정하거나 major.minor
형식으로 버전을 지정하면 입력과 일치하는 최신 패치 버전이 설정됩니다.
composer
의 주요 버전을 제외하고, 도구에 대해 major
버전만 지정하거나 major.minor
형식의 버전을 지정하면 GitHub의 API에 의해 속도가 제한될 수 있습니다. 이를 방지하려면 GitHub
OAuth 토큰을 제공하는 것이 좋습니다. GITHUB_TOKEN
환경 변수를 설정하면 됩니다. COMPOSER_TOKEN
환경 변수는 GITHUB_TOKEN
위해 더 이상 사용되지 않으며 다음 주요 버전에서 제거될 예정입니다.
- 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
기본적으로 설정됩니다. 메이저 버전 v1
또는 v2
를 지정하거나 major.minor
또는 semver
형식의 버전을 지정하여 필수 composer
버전을 설정할 수 있습니다. 또한 작성기 snapshot
및 preview
의 경우 해당 릴리스를 설정하도록 지정할 수도 있습니다. - name : Setup PHP with composer v2
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : composer:v2
tools: none
지정하여 건너뛸 수 있습니다. - name : Setup PHP without composer
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : none
도구 pear
, pecl
, phpize
및 php-config
는 Linux 및 macOS에서 지원되는 모든 PHP 버전에 대해 기본적으로 설정됩니다.
도구 입력에 blackfire
지정되면 최신 버전의 blackfire
cli가 설정됩니다. GitHub Actions와 함께 blackfire
사용하는 방법은 공식 문서를 참조하세요.
도구 입력에 composer:v1
도 지정되어 있지 않으면 도구 prestissimo
및 composer-prefetcher
건너뜁니다. prestissimo
삭제하고 composer v2
사용하는 것이 좋습니다.
기본적으로 정상적으로 설정할 수 없는 composer
도구가 로그에 오류 메시지를 남기는 경우를 제외하면 실행이 중단되지 않습니다. 이 동작을 변경하려면 fail-fast
플래그를 true
로 설정할 수 있습니다.
- name : Setup PHP with fail-fast
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : deployer
env :
fail-fast : true
메모
tools
CI 워크플로에서만 사용되는 도구를 설정하여 composer.json
깔끔하게 유지하는 데 유용합니다.--no-dev
와 함께 작곡가를 실행하고 tools
입력을 사용하여 필요한 도구를 설치하여 워크플로 속도를 높일 수 있습니다.COMPOSER_NO_INTERACTION
1
로 설정되고 COMPOSER_PROCESS_TIMEOUT
은 0
으로 설정됩니다. 실제로 이는 스크립트의 Composer 명령이 --no-interaction
지정할 필요가 없음을 의미합니다.COMPOSER_NO_AUDIT
는 1
로 설정됩니다. 따라서 보안 취약성에 대한 종속성을 감사하려면 설치하기 전에 composer audit
단계를 추가하는 것이 좋습니다.COMPOSER_PROCESS_TIMEOUT
을 설정하려면 env
키워드를 사용하여 워크플로 파일에서 설정할 수 있습니다. - name : Setup PHP with composer and custom process timeout
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
COMPOSER_PROCESS_TIMEOUT : 300
coverage: xdebug
사용하여 Xdebug
사용하고 PCOV
비활성화합니다.
지원되는 모든 PHP 버전에서 실행됩니다.
- name : Setup PHP with Xdebug
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : xdebug
coverage: xdebug
지정하면 PHP 버전과 호환되는 최신 버전의 Xdebug가 기본적으로 설정됩니다.coverage: xdebug2
지정할 수 있습니다. - name : Setup PHP with Xdebug 2.x
uses : shivammathur/setup-php@v2
with :
php-version : ' 7.4 '
coverage : xdebug2
참고 : Xdebug는 Ubuntu GitHub Actions 이미지에서 기본적으로 활성화되어 있으므로 작업 흐름에서 Xdebug를 사용하지 않는 경우 PHP 성능에 긍정적인 영향을 미치므로 비활성화하는 것이 좋습니다. 자세한 내용은 비활성화 보장 섹션을 참조하세요.
coverage: pcov
사용하여 PCOV
사용하고 Xdebug
비활성화합니다.
PHP 7.1 및 최신 PHP 버전에서 실행됩니다.
src
, lib
또는 app
이외의 경우 ini-values
입력을 사용하여 pcov.directory
지정합니다. - 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
설정해야 합니다. - name : Setup PCOV
run : |
composer require pcov/clobber
vendor/bin/pcov clobber
Xdebug
와 PCOV
모두 비활성화하려면 coverage: none
.
다음과 같은 이유로 보장을 비활성화합니다.
phpdbg
사용하고 있습니다.blackfire
사용하여 코드를 프로파일링하고 있습니다.- name : Setup PHP with no coverage driver
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
coverage : none
with
키워드를 사용하여 지정
php-version
(선택사항)string
허용합니다. 예를 들면 '8.4'
입니다.lowest
허용합니다.highest
또는 latest
허용합니다.nightly
허용합니다.dx
형식을 허용합니다. 여기서 d
주 버전입니다. 예를 들어 5.x
, 7.x
및 8.x
입니다.php-version-file
입력composer.lock
파일 및 platform-overrides.php
값composer.json
파일 및 config.platform.php
값 php-version-file
(선택사항)string
허용합니다. 예를 들어 '.phpenv-version'
..php-version
파일이 사용됩니다..php-version
파일을 찾을 수 없는 경우 최신 안정 PHP 버전이 설정됩니다. extensions
(선택사항)string
허용합니다. 예를 들어 mbstring, :opcache
.none
허용합니다.:
접두사가 붙은 공유 확장 프로그램은 비활성화됩니다.ini-file
(선택 사항)php.ini
파일을 지정합니다.production
, development
허용하거나 none
.php.ini
파일이 사용됩니다. ini-values
(선택 사항)php.ini
에 추가하려는 값을 지정하십시오.string
허용합니다. 예를 들어 post_max_size=256M, max_execution_time=180
입니다.xdebug.mode="develop,coverage"
입니다. coverage
(선택 사항)xdebug
, pcov
또는 none
허용합니다.tools
(선택 사항)string
허용합니다. 예: phpunit, phpcs
php-version
GitHub Actions에서는 setup-php
단계에 id
할당할 수 있으며, 이를 사용하여 이후 단계에서 출력을 얻을 수 있습니다.
- 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 }}
env
키워드를 사용하여 지정
fail-fast
(선택 사항)false
로 설정되어 있습니다.true
및 false
허용합니다. phpts
(선택사항)nts
허용하고 스레드로부터 안전하지 않은 경우 zts
또는 ts
허용합니다.nts
로 설정되어 있습니다.update
(선택사항)true
및 false
허용합니다.false
로 설정되어 있습니다.자세한 내용은 아래를 참조하세요.
특정 PHP 버전을 설정합니다.
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
여러 운영 체제에서 여러 PHP 버전을 설정하세요.
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 }}
PHP 8.5
의 야간 빌드를 설정합니다.
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
디버깅 기호를 사용하여 PHP 빌드를 설정합니다.
debug
환경 변수를 사용하여 PHP 5.6 이상에 대한 디버깅 기호가 포함된 빌드를 설정할 수 있습니다.메모
/usr/lib/debug/.build-id
디렉터리에 디버그 정보 파일로 추가됩니다. 이러한 파일은 PHP 바이너리의 ELF 섹션에 있는 build-id
와 일치하며 gdb
와 같은 디버깅 도구는 이러한 파일에서 기호를 확인할 수 있습니다.pdb
파일로 추가됩니다. steps :
- name : Setup PHP with debugging symbols
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
debug : true # specify true or false
TS
또는NTS
PHP를 설정합니다.
NTS
버전은 기본적으로 설정됩니다. 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
최신 PHP 버전 패치로 업데이트하세요.
ppa:ondrej/php
누락된 경우 PHP 버전이 최신 패치 릴리스로 업데이트됩니다.update
환경 변수를 true
로 지정할 수 있습니다. - name : Setup PHP with latest versions
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
update : true # specify true or false
워크플로 디버깅
문제를 디버깅하려면 v2
대신 verbose
태그를 사용할 수 있습니다.
- name : Setup PHP with logs
uses : shivammathur/setup-php@verbose
with :
php-version : ' 8.4 '
Ubuntu GitHub Runners의 여러 아키텍처에 PHP를 설정하세요.
PHP 5.6
에서 PHP 8.4
Ubuntu
의 여러 아키텍처에서 setup-php
에 의해 지원됩니다.shivammathur/node
이미지를 컨테이너로 사용할 수 있습니다. setup-php
에 호환되는 Nodejs
설치되어 있습니다.ARM
기반 설정의 경우 자체 호스팅 실행기가 필요합니다. 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 '
자체 호스팅 실행기에 PHP를 설정합니다.
컨테이너화된 자체 호스팅 실행기를 설정하려면 기본 운영 체제에 따라 다음 가이드를 참조하세요.
호스트 OS 또는 가상 머신에서 실행기를 직접 설정하려면 자체 호스팅 실행기를 설정하기 전에 이 요구 사항 가이드를 따르세요.
워크플로에서 서비스 컨테이너를 사용하는 경우 Linux 호스트 또는 Linux 가상 머신에서 실행기를 설정하세요. GitHub Actions는 Linux에서 중첩된 가상화를 지원하지 않으므로 Docker화된 컨테이너에서는 서비스가 작동하지 않습니다.
자체 호스팅 환경의 경우 self-hosted
값으로 환경 변수 runner
지정하는 것이 좋습니다.
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
메모
GitHub-hosted
실행기에서 사용하는 self-hosted
실행기에 동일한 레이블을 사용하지 마세요.
nektos/act
사용하여 로컬에서Ubuntu
워크플로를 테스트하세요.
jobs :
run :
runs-on : ubuntu-latest
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
shivammathur/node
docker 이미지를 사용하여 act
을 로컬로 실행합니다.
워크플로의 runs-on
속성과 일치하는 이미지 태그를 선택하세요. 예를 들어 워크플로에서 ubuntu-20.04
사용하는 경우 act -P ubuntu-20.04=shivammathur/node:2004
실행합니다.
# 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
PHP 8.0 이상에서 JIT(Just-in-time)를 활성화합니다.
opcache.enable_cli=1
설정하여 cli 모드에서 opcache
활성화하십시오.Xdebug
, PCOV
및 zend_execute_ex
함수를 재정의하는 기타 확장과 충돌하므로 coverage: none
설정하고 추가된 경우 해당 확장을 비활성화합니다.opcache.jit=1235
및 opcache.jit_buffer_size=256M
이 설정되어 있으며 ini-values
입력을 사용하여 변경할 수 있습니다.official PHP documentation
를 참조하세요. 예를 들어 버퍼 크기가 64 MB
인 tracing
모드에서 JIT를 활성화합니다.
- 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
shivammathur/cache-extensions
및 action/cache
GitHub Actions를 사용하여 PHP 확장을 캐시할 수 있습니다. 캐시될 때 설정하는 데 매우 오랜 시간이 걸리는 확장은 다음 워크플로 실행에서 사용할 수 있으며 직접 활성화됩니다. 이렇게 하면 워크플로 실행 시간이 단축됩니다.
자세한 내용은 shivammathur/cache-extensions
를 참조하세요.
프로젝트에서 작곡가를 사용하는 경우 작곡가의 내부 캐시 디렉터리를 유지할 수 있습니다. 캐시된 종속성은 설치 중에 다운로드하는 대신 직접 로드됩니다. 캐시된 파일은 검사 실행 전반에 걸쳐 사용할 수 있으며 워크플로 실행 시간을 줄여줍니다.
- 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
메모
action/cache
사용하여 vendor
디렉터리를 캐시하지 마세요.composer.lock
커밋하지 않으면 composer.json
의 해시를 캐시의 키로 사용할 수 있습니다. key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
composer
종속성을 지원하고 prefer-lowest
및 prefer-stable
옵션을 사용하는 경우 이를 매트릭스에 저장하고 키에 추가할 수 있습니다. key : ${{ runner.os }}-composer-${{ matrix.prefer }}-${{ hashFiles('**/composer.lock') }}
restore-keys : ${{ runner.os }}-composer-${{ matrix.prefer }}-
여러 도구를 설정하는 워크플로가 많거나 작곡가 종속성이 많은 경우 작곡가에 대한 GitHub의 속도 제한에 도달할 수 있습니다. 또한 메이저 버전만 지정하거나 major.minor
형식으로 버전을 지정하는 경우 속도 제한에 도달할 수 있습니다. 이를 방지하려면 GITHUB_TOKEN
환경 변수를 설정하여 OAuth
토큰을 지정할 수 있습니다. 이 목적으로 GITHUB_TOKEN
비밀을 사용할 수 있습니다.
COMPOSER_TOKEN
환경 변수는 GITHUB_TOKEN
위해 더 이상 사용되지 않으며 다음 주요 버전에서 제거될 예정입니다.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
비공개 작성기 종속성에 대해 Private Packagist를 사용하는 경우 인증을 위해 PACKAGIST_TOKEN
환경 변수를 설정할 수 있습니다.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
env :
PACKAGIST_TOKEN : ${{ secrets.PACKAGIST_TOKEN }}
GitHub 또는 Private Packagist 외에도 다른 곳에 호스팅된 프라이빗 리포지토리를 인증하려는 경우 인증 방법 및 json 형식의 자격 증명을 사용하여 COMPOSER_AUTH_JSON
환경 변수를 설정할 수 있습니다. 자세한 내용은 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 }}"
}
}
}
작업 흐름에서 여러 줄의 PHP 코드를 실행해야 하는 경우 파일에 저장하지 않고도 쉽게 실행할 수 있습니다.
단계의 실행 속성에 코드를 넣고 셸을 php {0}
으로 지정합니다.
- 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;
문제 일치자는 로그의 오류와 경고를 식별하고 이를 강조 표시하고 코드 주석을 생성하여 GitHub Actions UI에 눈에 띄게 표시하는 json
구성입니다.
setup-php
단계 뒤에 이 단계를 추가하여 PHP
출력에 대한 문제 일치자를 설정하십시오.
- name : Setup problem matchers for PHP
run : echo "::add-matcher::${{ runner.tool_cache }}/php.json"
setup-php
단계 뒤에 이 단계를 추가하여 PHPUnit
출력에 대한 문제 일치자를 설정합니다.
- name : Setup problem matchers for PHPUnit
run : echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
PHPStan은 GitHub Actions에서 오류 보고를 지원하므로 문제 일치자가 필요하지 않습니다.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : phpstan
- name : Run PHPStan
run : phpstan analyse src
Psalm은 출력 형식 github
사용하여 GitHub Actions의 오류 보고를 지원합니다.
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : psalm
- name : Run Psalm
run : psalm --output-format=github
phpstan
, psalm
, php-cs-fixer
및 phpcs
와 같은 checkstyle
보고를 지원하는 도구의 경우 cs2pr
사용하여 코드에 주석을 달 수 있습니다.
예제는 cs2pr 설명서를 참조하세요.
다음은
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
다양한 PHP 프레임워크 및 패키지와 함께 setup-php
사용하는 예입니다.
프레임워크/패키지 | 실행 대상 | 작업 흐름 |
---|---|---|
블랙파이어 | macOS , ubuntu 및 windows | blackfire.yml |
블랙파이어 플레이어 | macOS , ubuntu 및 windows | blackfire-player.yml |
MySQL 과 Redis 갖춘 CakePHP | ubuntu | cakephp-mysql.yml |
PostgreSQL 및 Redis 사용하는 CakePHP | ubuntu | cakephp-postgres.yml |
서비스가 없는 CakePHP | macOS , ubuntu 및 windows | cakephp.yml |
코드이그나이터 | macOS , ubuntu 및 windows | 코드이그나이터.yml |
라미나스 MVC | macOS , ubuntu 및 windows | laminas-mvc.yml |
MySQL 과 Redis 사용한 Laravel | ubuntu | laravel-mysql.yml |
PostgreSQL 및 Redis 사용한 Laravel | ubuntu | laravel-postgres.yml |
서비스가 없는 라라벨 | macOS , ubuntu 및 windows | laravel.yml |
MySQL 및 Redis 사용한 루멘 | ubuntu | 루멘-mysql.yml |
PostgreSQL 및 Redis 사용한 루멘 | ubuntu | 루멘-postgres.yml |
서비스가 없는 루멘 | macOS , ubuntu 및 windows | 루멘.yml |
MySQL 사용한 Phalcon | ubuntu | phalcon-mysql.yml |
PostgreSQL 사용한 Phalcon | ubuntu | phalcon-postgres.yml |
뿌리/기반암 | ubuntu | 기반암.yml |
뿌리/세이지 | ubuntu | 세이지.yml |
슬림 프레임워크 | macOS , ubuntu 및 windows | slim-framework.yml |
MySQL 과 심포니 | ubuntu | 심포니-mysql.yml |
PostgreSQL 과 심포니 | ubuntu | 심포니-postgres.yml |
서비스가 없는 심포니 | macOS , ubuntu 및 windows | 심포니.yml |
MySQL 이 포함된 Yii2 스타터 키트 | ubuntu | yii2-mysql.yml |
PostgreSQL 이 포함된 Yii2 스타터 키트 | ubuntu | yii2-postgres.yml |
v2
태그를 setup-php
버전으로 사용하세요. 이는 롤링 태그이며 최신 마이너 및 패치 릴리스와 동기화됩니다. v2
사용하면 버그 수정, 보안 패치, 새로운 기능 및 최신 PHP 릴리스에 대한 지원이 자동으로 제공됩니다.verbose
태그를 일시적으로 사용할 수 있습니다. 모든 로그를 출력하고 최신 릴리스와도 동기화됩니다.main
브랜치를 버전으로 사용하는 것은 권장되지 않습니다. 주요 릴리스 이후에는 주요 변경 사항이 있으므로 작업 흐름이 중단될 수 있습니다.v1
태그 또는 1.xy
버전을 사용하는 경우 v1
더 이상 지원되지 않으므로 v2로 전환해야 합니다. setup-php
의 로고는 php.net 로고의 파생물이며 CC BY-SA 4.0 라이선스에 따라 라이선스가 부여됩니다. 기여를 환영합니다!
setup-php
및 기타 관련 프로젝트의 기여자
setup-php
사용 경험을 공유해주세요.많은 사용자와 조직은 GitHub 후원자를 통해 setup-php를 지원합니다.
이들 회사는 이 프로젝트의 개발을 돕기 위해 setup-php 제품과 서비스를 아낌없이 제공합니다.