2019-09-24 14:38:22 +05:30
< p align = "center" >
< a href = "https://github.com/marketplace/actions/setup-php-action" target = "_blank" >
< img src = "https://repository-images.githubusercontent.com/206578964/e0a18480-dc65-11e9-8dd3-b9ffbf5575fe" alt = "Setup PHP in GitHub Actions" width = "400" >
< / a >
< / p >
2019-10-13 05:27:58 +05:30
< h1 align = "center" > Setup PHP in GitHub Actions< / h1 >
2019-09-06 05:48:51 +05:30
2019-10-13 05:27:58 +05:30
< p align = "center" >
2019-10-10 17:47:17 +05:30
< a href = "https://github.com/shivammathur/setup-php" title = "GitHub action to setup PHP" > < img alt = "GitHub Actions status" src = "https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg" > < / a >
< a href = "https://codecov.io/gh/shivammathur/setup-php" title = "Code coverage" > < img alt = "Codecov Code Coverage" src = "https://codecov.io/gh/shivammathur/setup-php/branch/master/graph/badge.svg" > < / a >
< a href = "https://github.com/shivammathur/setup-php/blob/master/LICENSE" title = "license" > < img alt = "LICENSE" src = "https://img.shields.io/badge/license-MIT-428f7e.svg" > < / a >
< a href = " #tada -php-support" title = "PHP Versions Supported" >< img alt = "PHP Versions Supported" src = "https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg" ></ a >
< a href = "https://www.patreon.com/shivammathur" title = "Support Shivam Mathur on Patreon" > < img alt = "Support me on Patreon" src = "https://shivammathur.com/badges/patreon.svg" > < / a > < a href = "https://www.paypal.me/shivammathur" > < img alt = "Support me on PayPal" src = "https://shivammathur.com/badges/paypal.svg" > < / a >
< a href = "https://www.codementor.io/shivammathur?utm_source=github&utm_medium=button&utm_term=shivammathur&utm_campaign=github" title = "Contact Shivam Mathur on Codementor" > < img alt = "Contact me on Codementor" src = "https://cdn.codementor.io/badges/contact_me_github.svg" > < / a >
2019-09-06 05:48:51 +05:30
< / p >
2019-10-10 17:47:17 +05:30
Setup PHP with required extensions, php.ini configuration and composer in [GitHub Actions ](https://github.com/features/actions "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 ](#memo-usage "How to use this" ) section and [examples ](#examples "Examples of use" ) to see how to use this.
2019-09-24 14:38:22 +05:30
2019-09-24 15:38:21 +05:30
## :tada: PHP Support
2019-09-06 05:48:51 +05:30
2019-09-24 14:38:22 +05:30
|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` |
2019-10-19 11:09:31 +05:30
|7.4|`RC3` /`RC4` |`Active` |
2019-09-09 05:41:17 +05:30
2019-09-24 14:38:22 +05:30
**Note:** PHP 7.4 is currently in development, do not use in production/release branches.
2019-09-06 06:10:52 +05:30
2019-09-24 14:38:22 +05:30
## :cloud: OS/Platform Support
2019-09-09 00:58:00 +05:30
|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` |
2019-09-24 14:38:22 +05:30
## :wrench: PHP Extension Support
2019-09-09 00:58:00 +05:30
- On `ubuntu` extensions which have the package in apt are installed.
- On `windows` and `macOS` PECL extensions are installed.
2019-09-07 18:01:50 +05:30
- Extensions which are installed along with PHP if specified are enabled.
2019-10-04 19:34:05 +05:30
- Extensions which cannot be installed gracefully leave an error message in the logs, the action is not interrupted.
2019-09-07 18:01:50 +05:30
2019-09-26 02:33:39 +05:30
## :signal_strength: Coverage support
2019-10-05 15:00:00 +05:30
### Xdebug
2019-10-10 17:47:17 +05:30
Specify `coverage: xdebug` to use `Xdebug` .
Runs on all [PHP versions supported ](#tada-php-support "List of PHP versions supported on this GitHub Action" )
2019-10-08 18:12:54 +05:30
```yaml
2019-09-26 02:33:39 +05:30
uses: shivammathur/setup-php@master
with:
2019-10-08 18:12:54 +05:30
php-version: '7.3'
2019-09-26 02:33:39 +05:30
coverage: xdebug
```
2019-10-05 15:00:00 +05:30
### PCOV
2019-10-10 17:47:17 +05:30
Specify `coverage: pcov` to use `PCOV` .
It is much faster than `Xdebug` .
2019-10-13 09:48:29 +05:30
`PCOV` needs `PHP >= 7.1`
2019-10-10 17:47:17 +05:30
If your source code directory is other than `src` , `lib` or, `app` , specify `pcov.directory` using the `ini-values-csv` input.
2019-10-13 09:48:29 +05:30
2019-10-08 18:12:54 +05:30
```yaml
2019-09-26 02:33:39 +05:30
uses: shivammathur/setup-php@master
with:
2019-10-08 18:12:54 +05:30
php-version: '7.3'
ini-values-csv: pcov.directory=api #optional , see above for usage.
2019-09-26 02:33:39 +05:30
coverage: pcov
```
2019-10-05 15:00:00 +05:30
### Disable coverage
2019-10-10 17:47:17 +05:30
2019-10-05 15:00:00 +05:30
Specify `coverage: none` to disable both `Xdebug` and `PCOV` .
2019-10-10 17:47:17 +05:30
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` .
2019-10-08 18:12:54 +05:30
```yaml
2019-10-05 15:00:00 +05:30
uses: shivammathur/setup-php@master
with:
2019-10-08 18:12:54 +05:30
php-version: '7.3'
2019-10-05 15:00:00 +05:30
coverage: none
```
2019-09-24 14:38:22 +05:30
## :memo: Usage
2019-09-06 05:48:51 +05:30
2019-09-18 07:40:09 +05:30
Inputs supported by this GitHub Action.
2019-09-06 05:48:51 +05:30
2019-10-04 19:34:05 +05:30
- php-version `required`
- extension-csv `optional`
- ini-values-csv `optional`
- coverage `optional`
2019-09-18 07:40:09 +05:30
2019-10-10 17:47:17 +05:30
See [action.yml ](action.yml "Metadata for this GitHub Action" ) and usage below for more info.
2019-09-18 07:40:09 +05:30
### Basic Usage
2019-09-08 12:53:33 +05:30
2019-09-06 05:48:51 +05:30
```yaml
steps:
- name: Checkout
uses: actions/checkout@master
- name: Installing PHP
uses: shivammathur/setup-php@master
with:
2019-10-08 18:12:54 +05:30
php-version: '7.3'
2019-09-18 07:40:09 +05:30
extension-csv: mbstring, xdebug #optional
2019-10-08 18:12:54 +05:30
ini-values-csv: post_max_size=256M, short_open_tag=On #optional
2019-09-26 02:33:39 +05:30
coverage: xdebug #optional
2019-09-06 05:48:51 +05:30
- name: Check PHP Version
run: php -v
- name: Check Composer Version
run: composer -V
2019-09-07 18:01:50 +05:30
- name: Check PHP Extensions
run: php -m
2019-09-06 05:48:51 +05:30
```
2019-09-08 12:53:33 +05:30
### Matrix Testing
2019-09-06 05:48:51 +05:30
```yaml
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']
2019-09-06 07:22:50 +05:30
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
2019-09-06 05:48:51 +05:30
steps:
- name: Checkout
uses: actions/checkout@master
- name: Install PHP
2019-09-06 07:10:02 +05:30
uses: shivammathur/setup-php@master
2019-09-06 05:48:51 +05:30
with:
php-version: ${{ matrix.php-versions }}
2019-09-18 07:40:09 +05:30
extension-csv: mbstring, xdebug #optional
2019-10-08 18:12:54 +05:30
ini-values-csv: post_max_size=256M, short_open_tag=On #optional
2019-09-26 02:33:39 +05:30
coverage: xdebug #optional
2019-09-06 05:48:51 +05:30
- name: Check PHP Version
run: php -v
2019-09-07 18:01:50 +05:30
- name: Check Composer Version
2019-09-08 09:26:13 +05:30
run: composer -V
2019-09-07 18:01:50 +05:30
- name: Check PHP Extensions
2019-10-13 09:48:29 +05:30
run: php -m
2019-09-06 05:48:51 +05:30
```
2019-10-03 13:43:34 +03:00
### Examples
2019-10-04 19:34:05 +05:30
Examples for setting up this GitHub Action with different PHP Frameworks/Packages.
2019-10-03 13:43:34 +03:00
2019-10-10 17:47:17 +05:30
|Framework/Package|Runs on|Workflow|
|--- |--- |--- |
|CodeIgniter|`macOS` , `ubuntu` and `windows` |[codeigniter.yml ](./examples/codeigniter.yml "GitHub Action for CodeIgniter" )|
|Laravel with `MySQL` and `Redis` |`ubuntu` |[laravel-mysql.yml ](./examples/laravel-mysql.yml "GitHub Action for Laravel with MySQL and Redis" )|
|Laravel with `PostgreSQL` and `Redis` |`ubuntu` |[laravel-postgres.yml ](./examples/laravel-postgres.yml "GitHub Action for Laravel with PostgreSQL and Redis" )|
|Laravel without services|`macOS` , `ubuntu` and `windows` |[laravel.yml ](./examples/laravel.yml "GitHub Action for Laravel without services" )|
2019-10-13 05:27:58 +05:30
|Lumen with `MySQL` and `Redis` |`ubuntu` |[lumen-mysql.yml ](./examples/lumen-mysql.yml "GitHub Action for Lumen with MySQL and Redis" )|
|Lumen with `PostgreSQL` and `Redis` |`ubuntu` |[lumen-postgres.yml ](./examples/lumen-postgres.yml "GitHub Action for Lumen with PostgreSQL and Redis" )|
|Lumen without services|`macOS` , `ubuntu` and `windows` |[lumen.yml ](./examples/lumen.yml "GitHub Action for Lumen without services" )|
2019-10-13 09:48:29 +05:30
|Phalcon with `MySQL` |`ubuntu` |[phalcon-mysql.yml ](./examples/phalcon-mysql.yml "GitHub Action for Phalcon with MySQL" )|
|Phalcon with `PostgreSQL` |`ubuntu` |[phalcon-postgres.yml ](./examples/phalcon-postgres.yml "GitHub Action for Phalcon with PostgreSQL" )|
2019-10-10 17:47:17 +05:30
|Slim Framework|`macOS` , `ubuntu` and `windows` |[slim-framework.yml ](./examples/slim-framework.yml "GitHub Action for Slim Framework" )|
|Symfony with `MySQL` |`ubuntu` |[symfony-mysql.yml ](./examples/symfony-mysql.yml "GitHub Action for Symfony with MySQL" )|
|Symfony with `PostgreSQL` |`ubuntu` |[symfony-postgres.yml ](./examples/symfony-postgres.yml "GitHub Action for Symfony with PostgreSQL" )|
|Yii2 Starter Kit with `MySQL` |`ubuntu` |[yii2-mysql.yml ](./examples/yii2-mysql.yml "GitHub Action for Yii2 Starter Kit with MySQL" )|
|Yii2 Starter Kit with `PostgreSQL` |`ubuntu` |[yii2-postgres.yml ](./examples/yii2-postgres.yml "GitHub Action for Yii2 Starter Kit with PostgreSQL" )|
|Zend Framework|`macOS` , `ubuntu` and `windows` |[zend-framework.yml ](./examples/zend-framework.yml "GitHub Action for Zend Framework" )|
2019-10-03 13:43:34 +03:00
2019-09-24 14:38:22 +05:30
## :scroll: License
2019-10-10 17:47:17 +05:30
The scripts and documentation in this project are released under the [MIT License ](LICENSE "License for shivammathur/setup-php" ). This project has multiple [dependencies ](https://github.com/shivammathur/setup-php/network/dependencies "Dependencies for this PHP Action" ) and their licenses can be found in their respective repositories.
2019-09-24 14:38:22 +05:30
## :+1: Contributions
2019-09-06 05:48:51 +05:30
2019-10-10 17:47:17 +05:30
Contributions are welcome! See [Contributor's Guide ](.github/CONTRIBUTING.md "shivammathur/setup-php contribution guide" ).
2019-09-06 05:48:51 +05:30
2019-09-24 14:38:22 +05:30
## :sparkling_heart: Support this project
2019-09-08 12:53:33 +05:30
2019-10-13 05:27:58 +05:30
- Please star the project and share it.
2019-09-24 14:38:22 +05:30
- Consider supporting on < a href = "https://www.patreon.com/shivammathur" >< img alt = "Support me on Patreon" src = "https://shivammathur.com/badges/patreon.svg" ></ a > and < a href = "https://www.paypal.me/shivammathur" >< img alt = "Support me on Paypal" src = "https://shivammathur.com/badges/paypal.svg" ></ a > .
2019-09-08 12:53:33 +05:30
2019-09-24 14:38:22 +05:30
## :bookmark: This action uses the following works
2019-09-08 12:53:33 +05:30
2019-10-10 17:47:17 +05:30
- [powershell-phpmanager ](https://github.com/mlocati/powershell-phpmanager "Package to handle PHP on windows" )
- [Homebrew ](https://brew.sh/ "MacOS package manager" )
- [ppa:ondrej/php ](https://launchpad.net/~ondrej/+archive/ubuntu/php "Pre-compiled ubuntu packages" )
- [exolnet/homebrew-deprecated ](https://github.com/eXolnet/homebrew-deprecated "Pre-compiled deprecated PHP for macOS" )
- [phpbrew ](https://github.com/phpbrew/phpbrew "PHP packages manager" )
2019-09-08 12:53:33 +05:30
2019-09-24 14:38:22 +05:30
## :bookmark_tabs: Further Reading
2019-09-06 05:48:51 +05:30
2019-10-10 17:47:17 +05:30
- [About GitHub Actions ](https://github.com/features/actions "GitHub Actions" )
- [GitHub Actions Syntax ](https://help.github.com/en/articles/workflow-syntax-for-github-actions "GitHub Actions Syntax" )
- [Other Awesome Actions ](https://github.com/sdras/awesome-actions "List of Awesome GitHub Actions" )