9.5 KiB
Setup PHP in GitHub Actions
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 Support
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 /RC4 |
Active |
Note: PHP 7.4 is currently in development, do not use in production/release branches.
☁️ OS/Platform Support
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 |
🔧 PHP Extension Support
- On
ubuntu
extensions which have the package in apt are installed. - On
windows
andmacOS
PECL 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.
📶 Coverage support
Xdebug
Specify coverage: xdebug
to use Xdebug
.
Runs on all PHP versions supported
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
coverage: xdebug
PCOV
Specify coverage: pcov
to use PCOV
.
It is much faster than Xdebug
.
PCOV
needs PHP >= 7.1
If your source code directory is other than src
, lib
or, app
, specify pcov.directory
using the ini-values-csv
input.
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
ini-values-csv: pcov.directory=api #optional, see above for usage.
coverage: pcov
Disable coverage
Specify coverage: none
to disable both Xdebug
and PCOV
.
Consider disabling the coverage using this PHP action for these reasons.
- You are not generating coverage reports while testing.
- It will disable
Xdebug
, which will have a positive impact on PHP performance. - You are using
phpdbg
.
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
coverage: none
📝 Usage
Inputs 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.
Basic Usage
steps:
- name: Checkout
uses: actions/checkout@master
- name: Setup 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 -m
Matrix Testing
jobs:
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: Setup 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
Examples for setting up this GitHub Action with different PHP Frameworks/Packages.
Framework/Package | Runs on | Workflow |
---|---|---|
CodeIgniter | macOS , ubuntu and windows |
codeigniter.yml |
Laravel with MySQL and Redis |
ubuntu |
laravel-mysql.yml |
Laravel with PostgreSQL and Redis |
ubuntu |
laravel-postgres.yml |
Laravel without services | macOS , ubuntu and windows |
laravel.yml |
Lumen with MySQL and Redis |
ubuntu |
lumen-mysql.yml |
Lumen with PostgreSQL and Redis |
ubuntu |
lumen-postgres.yml |
Lumen without services | macOS , ubuntu and windows |
lumen.yml |
Phalcon with MySQL |
ubuntu |
phalcon-mysql.yml |
Phalcon with PostgreSQL |
ubuntu |
phalcon-postgres.yml |
Slim Framework | macOS , ubuntu and windows |
slim-framework.yml |
Symfony with MySQL |
ubuntu |
symfony-mysql.yml |
Symfony with PostgreSQL |
ubuntu |
symfony-postgres.yml |
Yii2 Starter Kit with MySQL |
ubuntu |
yii2-mysql.yml |
Yii2 Starter Kit with PostgreSQL |
ubuntu |
yii2-postgres.yml |
Zend Framework | macOS , ubuntu and windows |
zend-framework.yml |
📜 License
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
Contributions are welcome! See Contributor's Guide.