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 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.
☁️ 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
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.
📶 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. 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: pcov
Disable coverage
Specify coverage: none to disable both Xdebug and PCOV.
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: 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 -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: 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
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 |
📜 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.