Setup PHP with required extensions, php.ini configuration and composer in GitHub Actions. This action can be added as a step in your action workflow and it will setup the PHP environment you need to test your application. Refer to Usage section and examples to see how to use this.
| PHP Version | Stability | Release Support |
|---|---|---|
| 5.6 | Stable |
End of life |
| 7.0 | Stable |
End of life |
| 7.1 | Stable |
Security fixes only |
| 7.2 | Stable |
Active |
| 7.3 | Stable |
Active |
| 7.4 | RC3 |
Active |
Note: PHP 7.4 is currently in development, do not use in production/release branches.
| Virtual environment | matrix.operating-system |
|---|---|
| Windows Server 2019 | windows-latest or windows-2019 |
| Windows Server 2016 R2 | windows-2016 |
| Ubuntu 18.04 | ubuntu-latest or ubuntu-18.04 |
| Ubuntu 16.04 | ubuntu-16.04 |
| macOS X Mojave 10.14 | macOS-latest or macOS-10.14 |
- On
ubuntuextensions which have the package in apt are installed. - On
windowsandmacOSPECL extensions are installed. - Extensions which are installed along with PHP if specified are enabled.
- Extensions which cannot be installed gracefully leave an error message in the logs, the action is not interrupted.
Specify coverage: xdebug to use Xdebug.
Runs on all PHP versions supported
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
coverage: xdebugSpecify coverage: pcov to use PCOV. PCOV is way faster than Xdebug.
For pcov.directory to be other than src, lib or, app, specify it using the ini-values-csv input.
PCOV needs PHPUnit >= 8.0 and PHP >= 7.1, PHPUnit needs PHP >= 7.2. So use PHP >= 7.2 with PCOV
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
ini-values-csv: pcov.directory=api #optional, see above for usage.
coverage: pcovSpecify coverage: none to disable both Xdebug and PCOV.
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
coverage: noneInputs supported by this GitHub Action.
- php-version
required - extension-csv
optional - ini-values-csv
optional - coverage
optional
See action.yml and usage below for more info.
steps:
- name: Checkout
uses: actions/checkout@master
- name: Installing PHP
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
extension-csv: mbstring, xdebug #optional
ini-values-csv: post_max_size=256M, short_open_tag=On #optional
coverage: xdebug #optional
- name: Check PHP Version
run: php -v
- name: Check Composer Version
run: composer -V
- name: Check PHP Extensions
run: php -mjobs:
run:
runs-on: ${{ matrix.operating-system }}
strategy:
max-parallel: 15
matrix:
operating-system: [ubuntu-latest, windows-latest, macOS-latest]
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3']
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
steps:
- name: Checkout
uses: actions/checkout@master
- name: Install PHP
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, xdebug #optional
ini-values-csv: post_max_size=256M, short_open_tag=On #optional
coverage: xdebug #optional
- name: Check PHP Version
run: php -v
- name: Check Composer Version
run: composer -V
- name: Check PHP Extensions
run: php -m
Examples for setting up this GitHub Action with different PHP Frameworks/Packages.
| Framework/Package | Workflow |
|---|---|
| CodeIgniter | codeigniter.yml |
Laravel MySQL Redis |
laravel-mysql.yml |
Laravel PostgreSQL Redis |
laravel-postgres.yml |
| Laravel | laravel.yml |
| Slim Framework | slim-framework.yml |
Symfony MySQL |
symfony-mysql.yml |
Symfony PostgreSQL |
symfony-postgres.yml |
Yii2 Starter Kit MySQL |
yii2-mysql.yml |
Yii2 Starter Kit PostgreSQL |
yii2-postgres.yml |
| Zend Framework | zend-framework.yml |
The scripts and documentation in this project are released under the MIT License. This project has multiple dependencies and their licenses can be found in their respective repositories.
Contributions are welcome! See Contributor's Guide.