ตั้งค่า 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.3PECL สามารถตั้งค่าได้โดยการต่อท้ายชื่อของส่วนขยายด้วยสถานะ เช่น 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 : :opcachenone เมื่อ none การระบุพร้อมกับส่วนขยายอื่นๆ ส่วนขยายนั้นจะถูกยกไปที่จุดเริ่มต้นของอินพุต ดังนั้น ส่วนขยายที่ใช้ร่วมกันทั้งหมดจะถูกปิดใช้งานก่อน จากนั้นส่วนขยายที่เหลือในอินพุตจะได้รับการประมวลผล หมายเหตุ: การดำเนินการนี้จะปิดใช้งานส่วนขยายที่ใช้ร่วมกันหลักและบุคคลที่สามทั้งหมด และทำให้เครื่องมือบางอย่างที่จำเป็นต้องใช้เสียหายได้ ส่วนขยายที่จำเป็นจะถูกเปิดใช้งานอีกครั้งเมื่อมีการตั้งค่าเครื่องมืออย่างดีที่สุด ดังนั้นจึงขอแนะนำให้เพิ่มส่วนขยายที่จำเป็นสำหรับเครื่องมือของคุณหลังจาก none ในอินพุต extensions เพื่อหลีกเลี่ยงปัญหาใดๆ
- name : Setup PHP without any shared extensions except mbstring
uses : shivammathur/setup-php@v2
with :
php-version : ' 8.4 '
extensions : none, mbstringintl สามารถตั้งค่าด้วยเวอร์ชัน 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 บน Ubuntuevent , gearman , geos และ relay บน Ubuntu และ macOSblackfire , 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, phpunitvendor/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-beta1tool:1 หรือ tool:1.xtool: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:v2tools: 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-interactionCOMPOSER_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 : xdebugcoverage: 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 : pcovpcov/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.xphp-version-file หากมีอยู่composer.lock และค่า platform-overrides.phpcomposer.json และค่า config.platform.php php-version-file (ไม่จำเป็น)string ตัวอย่างเช่น '.phpenv-version'.php-version จะถูกนำมาใช้.php-version เริ่มต้น แสดงว่า PHP เวอร์ชันเสถียรล่าสุดได้รับการตั้งค่าแล้ว extensions (ไม่บังคับ)string ในรูปแบบ CSV ตัวอย่างเช่น mbstring, :opcachenone เพื่อปิดการใช้งานส่วนขยายที่ใช้ร่วมกันทั้งหมด: ถูกปิดใช้งานini-file (ไม่จำเป็น)php.ini พื้นฐานproduction development หรือ nonephp.ini ที่ใช้งานจริงจะถูกใช้ ini-values (ไม่บังคับ)php.inistring ในรูปแบบ CSV ตัวอย่างเช่น post_max_size=256M, max_execution_time=180xdebug.mode="develop,coverage" coverage (ไม่จำเป็น)xdebug , pcov หรือ nonetools (ไม่จำเป็น)string ในรูปแบบ CSV ตัวอย่างเช่น: phpunit, phpcsphp-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 (ไม่จำเป็น)falsetrue และ false phpts (ไม่จำเป็น)nts สำหรับเธรดที่ไม่ปลอดภัยและ zts หรือ ts สำหรับเธรดที่ปลอดภัยntsupdate (ไม่บังคับ)true และ falsefalseดูด้านล่างสำหรับข้อมูลเพิ่มเติม
ตั้งค่า 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หรือNTSPHP
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 บนสถาปัตยกรรมหลายตัวบน Ubuntushivammathur/node เป็นคอนเทนเนอร์ได้ สิ่งเหล่านี้มีการติดตั้ง Nodejs ที่เข้ากันได้สำหรับ setup-phpARM คุณจะต้องมีนักวิ่งที่โฮสต์เอง 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=1Xdebug , PCOV และส่วนขยายอื่น ๆ ที่แทนที่ฟังก์ชัน zend_execute_ex ดังนั้นให้ตั้ง coverage: none และปิดใช้งานส่วนขยายดังกล่าวหากมีการเพิ่มopcache.jit=1235 และ opcache.jit_buffer_size=256M ได้รับการตั้งค่าซึ่งสามารถเปลี่ยนแปลงได้โดยใช้อินพุต ini-valuesofficial 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 เพื่อช่วยในการพัฒนาโครงการนี้