ตั้งค่า PHP ด้วยส่วนขยายที่จำเป็น การกำหนดค่า php.ini การรองรับการครอบคลุมโค้ด และเครื่องมือต่างๆ เช่น ผู้แต่งใน GitHub Actions การดำเนินการนี้ให้อินเทอร์เฟซข้ามแพลตฟอร์มแก่คุณเพื่อตั้งค่าสภาพแวดล้อม PHP ที่คุณต้องการเพื่อทดสอบแอปพลิเคชันของคุณ โปรดดูส่วนการใช้งานและตัวอย่างเพื่อดูวิธีใช้งาน
ทั้งรันเนอร์ GitHub-hosted
และ self-hosted
ได้รับการสนับสนุนโดย 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 Sequoia 15.x | macos-15 | - |
macOS โซโนมา 14.x | macos-latest หรือ macos-14 | - |
macOS Ventura 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 Ventura 13.x x86_64/arm64 | self-hosted หรือ macOS |
setup-php
จะสลับไปที่เวอร์ชันดังกล่าว ไม่เช่นนั้นจะติดตั้งเวอร์ชัน 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 |
หมายเหตุ:
8.5
ในอินพุต php-version
จะติดตั้งบิลด์ทุกคืนของ PHP 8.5.0-dev
ดูการตั้งค่าบิลด์ทุกคืนสำหรับข้อมูลเพิ่มเติมPHP 8.0
ขึ้นไป โปรดดูส่วนการกำหนดค่า JIT ส่วนขยาย PHP สามารถตั้งค่าได้โดยใช้อินพุต extensions
ยอมรับ string
ในรูปแบบ CSV
Ubuntu
คุณสามารถตั้งค่าส่วนขยายซึ่งมีให้ใช้งานเป็นแพ็คเกจซึ่งมีอยู่บน PECL
หรือที่เก็บ git ได้ - name : Setup PHP with PECL extension
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : imagick, swoole
บน Windows
คุณสามารถตั้งค่าส่วนขยายที่มีอยู่บน PECL
ซึ่งมีไบนารี DLL
ได้
บน 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
การระบุพร้อมกับส่วนขยายอื่นๆ ส่วนขยายนั้นจะถูกยกไปที่จุดเริ่มต้นของอินพุต ดังนั้น ส่วนขยายที่ใช้ร่วมกันทั้งหมดจะถูกปิดใช้งานก่อน จากนั้นส่วนขยายที่เหลือในอินพุตจะได้รับการประมวลผล หมายเหตุ: การดำเนินการนี้จะปิดใช้งานส่วนขยายที่ใช้ร่วมกันหลักและบุคคลที่สามทั้งหมด และทำให้เครื่องมือบางอย่างที่จำเป็นต้องใช้เสียหายได้ ส่วนขยายที่จำเป็นจะถูกเปิดใช้งานอีกครั้งเมื่อมีการตั้งค่าเครื่องมืออย่างดีที่สุด ดังนั้นจึงขอแนะนำให้เพิ่มส่วนขยายที่จำเป็นสำหรับเครื่องมือของคุณหลังจาก none
ในอินพุต extensions
เพื่อหลีกเลี่ยงปัญหาใดๆ
- name : Setup PHP without any shared extensions except mbstring
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : none, mbstring
intl
สามารถตั้งค่าด้วยเวอร์ชัน ICU
เฉพาะสำหรับ PHP 5.6
ขึ้นไปในเวิร์กโฟลว์ Ubuntu
โดยการต่อท้าย intl
ด้วยเวอร์ชัน ICU
รองรับ 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
สามารถพบได้บนวิกิ
ส่วนขยายเหล่านี้มีการสนับสนุนแบบกำหนดเอง:
cubrid
และ pdo_cubrid
บน Ubuntu
event
, gearman
, geos
และ relay
บน Ubuntu
และ macOS
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
ที่ตรงกับรายการบน Packagist รูปแบบนี้ยอมรับข้อจำกัดเวอร์ชันเดียวกันกับ 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
สำหรับเครื่องมือ คุณสามารถรับอัตราที่จำกัดโดย API ของ GitHub เพื่อหลีกเลี่ยงปัญหานี้ ขอแนะนำให้จัดเตรียมโทเค็น 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
เวอร์ชันเสถียรล่าสุดได้รับการตั้งค่าตามค่าเริ่มต้น คุณสามารถตั้งค่าเวอร์ชัน composer
ที่ต้องการได้โดยการระบุเวอร์ชันหลัก v1
หรือ v2
หรือเวอร์ชันในรูปแบบ major.minor
หรือ semver
นอกจากนี้ ยังสามารถระบุ 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
ได้รับการตั้งค่าตามค่าเริ่มต้นสำหรับ PHP เวอร์ชันที่รองรับทั้งหมดบน Linux และ macOS
blackfire
cli เวอร์ชันล่าสุดได้รับการตั้งค่าเมื่อมีการระบุ blackfire
ในอินพุตเครื่องมือ โปรดดูเอกสารอย่างเป็นทางการสำหรับการใช้ blackfire
กับ GitHub Actions
เครื่องมือ prestissimo
และ composer-prefetcher
จะถูกข้ามไป เว้นแต่จะระบุ composer:v1
ในอินพุตเครื่องมือด้วย ขอแนะนำให้ทิ้ง 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
Xdebug เวอร์ชันล่าสุดที่เข้ากันได้กับเวอร์ชัน PHP จะถูกตั้งค่าตามค่าเริ่มต้น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 ดังนั้นหากคุณไม่ได้ใช้มันในเวิร์กโฟลว์ของคุณ ขอแนะนำให้ปิดใช้งานเนื่องจากจะส่งผลดีต่อประสิทธิภาพ PHP ของคุณ โปรดดูรายละเอียดในส่วนความคุ้มครองการปิดใช้งาน
ระบุ coverage: pcov
เพื่อใช้ PCOV
และปิดการใช้งาน Xdebug
ทำงานบน PHP 7.1 และ PHP เวอร์ชันใหม่กว่า
src
, lib
หรือ app
ให้ระบุ pcov.directory
โดยใช้อินพุต ini-values
- 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
ระบุ coverage: none
เพื่อปิดใช้งานทั้ง Xdebug
และ PCOV
ปิดการใช้งานความคุ้มครองด้วยเหตุผลเหล่านี้:
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
เพื่อตั้งค่าเวอร์ชัน PHP ที่รองรับต่ำสุดhighest
หรือ latest
เพื่อตั้งค่า PHP เวอร์ชันเสถียรล่าสุดnightly
เพื่อตั้งค่างานสร้างทุกคืนจากสาขาหลักของ PHPdx
โดยที่ 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
ในรูปแบบ CSV ตัวอย่างเช่น mbstring, :opcache
none
เพื่อปิดการใช้งานส่วนขยายที่ใช้ร่วมกันทั้งหมด:
ถูกปิดใช้งานini-file
(ไม่จำเป็น)php.ini
พื้นฐานproduction
development
หรือ none
php.ini
ที่ใช้งานจริงจะถูกใช้ ini-values
(ไม่บังคับ)php.ini
string
ในรูปแบบ CSV ตัวอย่างเช่น post_max_size=256M, max_execution_time=180
xdebug.mode="develop,coverage"
coverage
(ไม่จำเป็น)xdebug
, pcov
หรือ none
tools
(ไม่จำเป็น)string
ในรูปแบบ CSV ตัวอย่างเช่น: 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
ไฟล์เหล่านี้ตรงกับ build-id
ในส่วน ELF ของไบนารี PHP และเครื่องมือแก้ไขข้อบกพร่อง เช่น gdb
สามารถแก้ไขสัญลักษณ์จากไฟล์เหล่านี้ได้pdb
ในไดเร็กทอรีการติดตั้ง PHP 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
หายไปในสภาพแวดล้อม Ubuntu GitHub เวอร์ชัน 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
ดีบักเวิร์กโฟลว์ของคุณ
หากต้องการแก้ไขข้อบกพร่องใดๆ คุณสามารถใช้แท็ก verbose
แทน v2
ได้
- name : Setup PHP with logs
uses : shivammathur/setup-php@verbose
with :
php-version : ' 8.4 '
ตั้งค่า PHP บนสถาปัตยกรรมหลายตัวบน Ubuntu GitHub Runners
PHP 5.6
ถึง PHP 8.4
รองรับโดย setup-php
บนสถาปัตยกรรมหลายตัวบน Ubuntu
shivammathur/node
เป็นคอนเทนเนอร์ได้ สิ่งเหล่านี้มีการติดตั้ง Nodejs
ที่เข้ากันได้สำหรับ setup-php
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 บนรันเนอร์ที่โฮสต์เอง
หากต้องการตั้งค่ารันเนอร์ที่โฮสต์เองในคอนเทนเนอร์ โปรดดูคำแนะนำต่อไปนี้ตามระบบปฏิบัติการพื้นฐานของคุณ
หากต้องการตั้งค่ารันเนอร์โดยตรงบนระบบปฏิบัติการโฮสต์หรือในเครื่องเสมือน ให้ปฏิบัติตามคำแนะนำข้อกำหนดนี้ก่อนตั้งค่ารันเนอร์ที่โฮสต์เอง
หากเวิร์กโฟลว์ของคุณใช้คอนเทนเนอร์บริการ ให้ตั้งค่ารันเนอร์บนโฮสต์ Linux หรือในเครื่องเสมือน Linux GitHub Actions ไม่รองรับการจำลองเสมือนแบบซ้อนบน Linux ดังนั้นบริการต่างๆ จะไม่ทำงานในคอนเทนเนอร์แบบเทียบท่า
ขอแนะนำให้ระบุ runner
ตัวแปรสภาพแวดล้อมด้วยค่า self-hosted
สำหรับสภาพแวดล้อมที่โฮสต์เอง
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
หมายเหตุ
self-hosted
ซึ่งใช้โดยนักวิ่ง GitHub-hosted
ทดสอบเวิร์กโฟลว์
Ubuntu
ของคุณภายในเครื่องโดยใช้nektos/act
jobs :
run :
runs-on : ubuntu-latest
steps :
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
รันเวิร์กโฟลว์ในเครื่องด้วย act
โดยใช้อิมเมจ shivammathur/node
docker
เลือกแท็กรูปภาพที่ตรงกับคุณสมบัติ 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
เปิดใช้งาน Just-in-time (JIT) บน PHP 8.0 ขึ้นไป
opcache
ในโหมด cli โดยการตั้งค่า opcache.enable_cli=1
Xdebug
, PCOV
และส่วนขยายอื่น ๆ ที่แทนที่ฟังก์ชัน zend_execute_ex
ดังนั้นให้ตั้ง coverage: none
และปิดใช้งานส่วนขยายดังกล่าวหากมีการเพิ่มopcache.jit=1235
และ opcache.jit_buffer_size=256M
ได้รับการตั้งค่าซึ่งสามารถเปลี่ยนแปลงได้โดยใช้อินพุต ini-values
official PHP documentation
ตัวอย่างเช่น เพื่อเปิดใช้งาน JIT ในโหมด tracing
ด้วยขนาดบัฟเฟอร์ 64 MB
- 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
คุณสามารถแคชส่วนขยาย PHP ได้โดยใช้ shivammathur/cache-extensions
และ action/cache
GitHub Actions ส่วนขยายที่ใช้เวลานานมากในการตั้งค่าเมื่อแคชจะพร้อมใช้งานในเวิร์กโฟลว์ถัดไปและเปิดใช้งานโดยตรง ซึ่งจะช่วยลดเวลาดำเนินการเวิร์กโฟลว์
อ้างถึง 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
หมายเหตุ
vendor
โดยใช้ action/cache
เนื่องจากจะทำให้เกิดผลข้างเคียง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
คุณจะใช้อัตราถึงขีดจำกัดได้ เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถระบุโทเค็น OAuth
ได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม GITHUB_TOKEN
คุณสามารถใช้ความลับ 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 แล้ว หากคุณต้องการตรวจสอบสิทธิ์พื้นที่เก็บข้อมูลส่วนตัวที่โฮสต์อยู่ที่อื่น คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม COMPOSER_AUTH_JSON
ด้วยวิธีตรวจสอบสิทธิ์และข้อมูลประจำตัวในรูปแบบ 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 หลายบรรทัดในเวิร์กโฟลว์ของคุณ คุณสามารถทำได้ง่ายๆ โดยไม่ต้องบันทึกลงในไฟล์
ใส่โค้ดในคุณสมบัติ run ของขั้นตอนและระบุเชลล์เป็น 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;
ตัวจับคู่ปัญหาคือการกำหนดค่า json
ที่ระบุข้อผิดพลาดและคำเตือนในบันทึกของคุณและแสดงข้อผิดพลาดและคำเตือนเหล่านี้อย่างเด่นชัดใน GitHub Actions UI โดยการไฮไลต์และสร้างคำอธิบายประกอบโค้ด
ตั้งค่าตัวจับคู่ปัญหาสำหรับเอาต์พุต PHP
ของคุณโดยเพิ่มขั้นตอนนี้หลังขั้นตอน setup-php
- name : Setup problem matchers for PHP
run : echo "::add-matcher::${{ runner.tool_cache }}/php.json"
ตั้งค่าตัวจับคู่ปัญหาสำหรับเอาต์พุต PHPUnit
ของคุณโดยเพิ่มขั้นตอนนี้หลังขั้นตอน setup-php
- 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 Actions ด้วยรูปแบบเอาต์พุต github
- name : Setup PHP
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
tools : psalm
- name : Run Psalm
run : psalm --output-format=github
สำหรับเครื่องมือที่รองรับการรายงาน checkstyle
เช่น phpstan
, psalm
, php-cs-fixer
และ phpcs
คุณสามารถใช้ 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
ตัวอย่างการใช้ setup-php
กับเฟรมเวิร์กและแพ็คเกจ PHP ต่างๆ
กรอบงาน/แพ็คเกจ | วิ่งต่อไป | ขั้นตอนการทำงาน |
---|---|---|
แบล็คไฟร์ | macOS , ubuntu และ windows | blackfire.yml |
ผู้เล่นแบล็คไฟร์ | macOS , ubuntu และ windows | blackfire-player.yml |
CakePHP พร้อม MySQL และ Redis | ubuntu | cakephp-mysql.yml |
CakePHP พร้อม PostgreSQL และ Redis | ubuntu | cakephp-postgres.yml |
CakePHP ที่ไม่มีบริการ | macOS , ubuntu และ windows | เค้กphp.yml |
รหัสอิกนิเตอร์ | macOS , ubuntu และ windows | codeigniter.yml |
ลามินาส เอ็มวีซี | macOS , ubuntu และ windows | ลามินาส-mvc.yml |
Laravel กับ MySQL และ Redis | ubuntu | laravel-mysql.yml |
Laravel พร้อม PostgreSQL และ Redis | ubuntu | laravel-postgres.yml |
Laravel ที่ไม่มีบริการ | macOS , ubuntu และ windows | laravel.yml |
ลูเมนพร้อม MySQL และ Redis | ubuntu | lumen-mysql.yml |
ลูเมนพร้อม PostgreSQL และ Redis | ubuntu | lumen-postgres.yml |
ลูเมนที่ไม่มีบริการ | macOS , ubuntu และ windows | lumen.yml |
ฟาลคอนกับ MySQL | ubuntu | เหยี่ยว-mysql.yml |
ฟาลคอนพร้อม PostgreSQL | ubuntu | phalcon-postgres.yml |
ราก/ข้อเท็จจริง | ubuntu | bedrock.yml |
ราก/ปราชญ์ | ubuntu | sage.yml |
กรอบบางเฉียบ | macOS , ubuntu และ windows | slim-framework.yml |
ซิมโฟนีกับ MySQL | ubuntu | symfony-mysql.yml |
Symfony พร้อม PostgreSQL | ubuntu | symfony-postgres.yml |
Symfony ที่ไม่มีบริการ | macOS , ubuntu และ windows | symfony.yml |
ชุดเริ่มต้น Yii2 พร้อม MySQL | ubuntu | yii2-mysql.yml |
ชุดเริ่มต้น Yii2 พร้อม PostgreSQL | ubuntu | yii2-postgres.yml |
v2
เป็นเวอร์ชัน setup-php
มันเป็นแท็กกลิ้งและซิงค์กับรุ่นรองและแพทช์ล่าสุด ด้วย v2
คุณจะได้รับการแก้ไขข้อบกพร่อง แพตช์ความปลอดภัย ฟีเจอร์ใหม่ และการสนับสนุน PHP รุ่นล่าสุดโดยอัตโนมัติverbose
สามารถใช้ชั่วคราวได้ มันส่งออกบันทึกทั้งหมดและซิงค์กับรุ่นล่าสุดด้วยmain
เป็นเวอร์ชัน เนื่องจากอาจทำให้เวิร์กโฟลว์ของคุณเสียหายหลังจากการเปิดตัวรุ่นหลัก เนื่องจากมีการเปลี่ยนแปลงที่ไม่แน่นอนv1
หรือเวอร์ชัน 1.xy
คุณควรสลับไปใช้ v2 เนื่องจากระบบไม่รองรับ v1
อีกต่อไป setup-php
เป็นผลงานลอกเลียนแบบของโลโก้ php.net และได้รับอนุญาตภายใต้ใบอนุญาต CC BY-SA 4.0 ยินดีบริจาค!
ผู้ร่วมให้ข้อมูล setup-php
และโครงการอื่นๆ ที่เกี่ยวข้อง
setup-php
ผู้ใช้และองค์กรจำนวนมากรองรับ setup-php ผ่านผู้สนับสนุน GitHub
บริษัทเหล่านี้ใจดีจัดหาผลิตภัณฑ์และบริการ setup-php เพื่อช่วยในการพัฒนาโครงการนี้