setup-php/README.md

535 lines
21 KiB
Markdown
Raw Permalink Normal View History

<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>
<h1 align="center">Setup PHP in GitHub Actions</h1>
2019-09-06 07:18:51 +07:00
<p align="center">
2019-10-10 19:17:17 +07:00
<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>
2020-02-14 14:15:46 +07:00
<a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-%3E%3D%205.3-8892BF.svg"></a>
2019-09-06 07:18:51 +07:00
</p>
2020-01-17 14:28:28 +07:00
Setup PHP with required extensions, php.ini configuration, code-coverage support and various tools like composer in [GitHub Actions](https://github.com/features/actions "GitHub Actions"). This action gives you a cross platform interface to 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-11-03 11:41:44 +07:00
## Contents
- [PHP Support](#tada-php-support)
- [OS/Platform Support](#cloud-osplatform-support)
2019-12-27 08:26:49 +07:00
- [PHP Extension Support](#heavy_plus_sign-php-extension-support)
- [Tools Support](#wrench-tools-support)
2019-11-03 11:41:44 +07:00
- [Coverage support](#signal_strength-coverage-support)
- [Xdebug](#xdebug)
- [PCOV](#pcov)
2020-02-14 14:15:46 +07:00
- [Disable Coverage](#disable-coverage)
2019-11-03 11:41:44 +07:00
- [Usage](#memo-usage)
2020-02-14 14:15:46 +07:00
- [Inputs](#inputs)
2019-12-18 23:14:02 +07:00
- [Basic Setup](#basic-setup)
- [Matrix Setup](#matrix-setup)
2020-02-14 14:15:46 +07:00
- [Experimental Setup](#experimental-setup)
- [Thread Safe Setup](#thread-safe-setup)
- [Force Update](#force-update)
- [Verbose Setup](#verbose-setup)
- [Cache Extensions](#cache-extensions)
- [Cache Composer Dependencies](#cache-composer-dependencies)
2020-02-21 15:09:04 +07:00
- [Cache Node.js Dependencies](#cache-nodejs-dependencies)
2019-12-19 04:08:12 +07:00
- [Problem Matchers](#problem-matchers)
2019-11-03 11:41:44 +07:00
- [Examples](#examples)
- [License](#scroll-license)
- [Contributions](#1-contributions)
2020-02-14 14:15:46 +07:00
- [Support This Project](#sparkling_heart-support-this-project)
- [Dependencies](#bookmark-dependencies)
2019-11-03 11:41:44 +07:00
- [Further Reading](#bookmark_tabs-further-reading)
## :tada: PHP Support
2019-09-06 07:18:51 +07:00
|PHP Version|Stability|Release Support|
|--- |--- |--- |
2020-02-14 14:15:46 +07:00
|5.3|`Stable`|`End of life`|
|5.4|`Stable`|`End of life`|
|5.5|`Stable`|`End of life`|
|5.6|`Stable`|`End of life`|
|7.0|`Stable`|`End of life`|
2019-12-05 03:37:21 +07:00
|7.1|`Stable`|`End of life`|
|7.2|`Stable`|`Security fixes only`|
|7.3|`Stable`|`Active`|
2019-11-28 17:28:33 +07:00
|7.4|`Stable`|`Active`|
2019-12-09 09:39:03 +07:00
|8.0|`Experimental`|`In development`|
2019-12-28 01:53:51 +07:00
**Note:** Specifying `8.0` in `php-version` input installs a nightly build of `PHP 8.0.0-dev` with `PHP JIT`, `Union Types v2` and other [new features](https://wiki.php.net/rfc#php_80 "New features implemented in PHP 8"). See [experimental setup](#experimental-setup) for more information.
2019-09-06 07:40:52 +07:00
## :cloud: OS/Platform Support
|Virtual environment|matrix.operating-system|
|--- |--- |
|Windows Server 2019|`windows-latest` or `windows-2019`|
|Ubuntu 18.04|`ubuntu-latest` or `ubuntu-18.04`|
|Ubuntu 16.04|`ubuntu-16.04`|
2020-03-14 03:10:11 +07:00
|macOS X Catalina 10.15|`macos-latest` or `macos-10.15`|
2019-12-27 08:26:49 +07:00
## :heavy_plus_sign: PHP Extension Support
2020-02-29 22:38:26 +07:00
- On `ubuntu` by default extensions which are available as a package can be installed. PECL extensions if not available as a package can be installed by specifying `pecl` in the tools input.
2020-02-14 14:15:46 +07:00
```yaml
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: pecl
extensions: swoole
```
2020-02-29 22:38:26 +07:00
- On `windows` PECL extensions which have the `DLL` binary can be installed.
2020-02-14 14:15:46 +07:00
2020-02-29 22:38:26 +07:00
- On `macOS` PECL extensions can be installed.
2020-02-14 14:15:46 +07:00
2020-02-29 22:38:26 +07:00
- Extensions installed along with PHP if specified are enabled.
2020-02-14 14:15:46 +07:00
2020-02-29 22:38:26 +07:00
- Specific versions of PECL extensions can be installed by suffixing the version. This is useful for installing old versions of extensions which support end of life PHP versions.
2020-02-14 14:15:46 +07:00
```yaml
uses: shivammathur/setup-php@v2
with:
2020-02-29 22:38:26 +07:00
php-version: '5.4'
2020-02-14 14:15:46 +07:00
tools: pecl
2020-02-29 22:38:26 +07:00
extensions: swoole-1.9.3
2020-02-14 14:15:46 +07:00
```
2020-02-29 22:38:26 +07:00
- Pre-release versions of PECL extensions can be setup by suffixing the extension with its state i.e `alpha`, `beta`, `devel` or `snapshot`.
2020-02-14 14:15:46 +07:00
```yaml
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: pecl
extensions: xdebug-beta
```
2020-02-29 22:38:26 +07:00
- Extensions which cannot be setup gracefully leave an error message in the logs, the action is not interrupted.
2020-02-27 16:57:09 +07:00
2020-02-29 22:38:26 +07:00
- These extensions have custom support - `gearman` on ubuntu, `blackfire`, `phalcon3` and `phalcon4` on all supported OS.
2019-09-07 19:31:50 +07:00
2019-12-27 08:26:49 +07:00
## :wrench: Tools Support
These tools can be setup globally using the `tools` input.
2019-12-27 08:26:49 +07:00
2020-02-29 22:38:26 +07:00
`blackfire`, `blackfire-player`, `codeception`, `composer`, `composer-prefetcher`, `cs2pr`, `deployer`, `flex`, `pecl`, `phinx`, `phive`, `phpcbf`, `phpcpd`, `php-config`, `php-cs-fixer`, `phpcs`, `phpize`, `phpmd`, `phpstan`, `phpunit`, `prestissimo`, `psalm`, `symfony`
2019-12-27 08:26:49 +07:00
```yaml
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
2019-12-27 08:26:49 +07:00
with:
php-version: '7.4'
tools: php-cs-fixer, phpunit
```
2020-02-29 22:38:26 +07:00
To setup a particular version of a tool, specify it in this form `tool:version`.
Version should be in semver format and a valid release of the tool.
```yaml
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: php-cs-fixer:2.15.5, phpunit:8.5.1
```
2020-02-29 22:38:26 +07:00
**Notes**
- `composer` is setup by default.
2020-02-14 14:15:46 +07:00
- Specifying version for `composer` and `pecl` has no effect, latest versions of both tools which are compatible with the PHP version will be setup.
2020-02-29 01:56:00 +07:00
- Both agent and client will be setup when `blackfire` is specified.
- If the version specified for the tool is not in semver format, latest version of the tool will be setup.
- Tools which cannot be installed gracefully leave an error message in the logs, the action is not interrupted.
2019-12-28 01:53:51 +07:00
## :signal_strength: Coverage support
2019-10-05 16:30:00 +07:00
### Xdebug
2019-10-10 19:17:17 +07:00
Specify `coverage: xdebug` to use `Xdebug`.
2019-12-18 23:14:02 +07:00
Runs on all [PHP versions supported](#tada-php-support "List of PHP versions supported on this GitHub Action") except `8.0`.
2019-10-08 19:42:54 +07:00
```yaml
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
coverage: xdebug
```
2019-10-05 16:30:00 +07:00
### PCOV
2020-02-03 04:56:06 +07:00
Specify `coverage: pcov` to use `PCOV` and disable `Xdebug`.
2019-10-10 19:17:17 +07:00
It is much faster than `Xdebug`.
2019-11-03 11:41:44 +07:00
`PCOV` needs `PHP >= 7.1`.
If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values` input.
2019-10-13 11:18:29 +07:00
2019-10-08 19:42:54 +07:00
```yaml
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
with:
2019-11-30 06:53:14 +07:00
php-version: '7.4'
ini-values: pcov.directory=api #optional, see above for usage.
coverage: pcov
```
2020-02-14 14:15:46 +07:00
### Disable Coverage
2019-10-10 19:17:17 +07:00
2020-02-14 14:15:46 +07:00
Specify `coverage: none` to remove both `Xdebug` and `PCOV`.
2019-10-10 19:17:17 +07:00
Consider disabling the coverage using this PHP action for these reasons.
2019-11-03 11:41:44 +07:00
2019-10-10 19:17:17 +07:00
- You are not generating coverage reports while testing.
2019-12-28 01:53:51 +07:00
- It will remove `Xdebug`, which will have a positive impact on PHP performance.
2019-11-03 11:41:44 +07:00
- You are using `phpdbg` for running your tests.
2020-02-29 22:38:26 +07:00
- You are profiling your code using `blackfire`.
2019-10-08 19:42:54 +07:00
```yaml
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
2019-10-05 16:30:00 +07:00
with:
2019-11-30 06:53:14 +07:00
php-version: '7.4'
2019-10-05 16:30:00 +07:00
coverage: none
```
## :memo: Usage
2019-09-06 07:18:51 +07:00
2020-02-14 14:15:46 +07:00
### Inputs
#### `php-version` (required)
- Specify the PHP version you want to setup.
- Accepts a `string`. For example `'7.4'`.
- See [PHP support](#tada-php-support) for supported PHP versions.
#### `extensions` (optional)
- Specify the extensions you want to setup.
- Accepts a `string` in csv-format. For example `mbstring, zip`.
- See [PHP extension support](#heavy_plus_sign-php-extension-support) for more info.
2019-09-06 07:18:51 +07:00
2020-02-14 14:15:46 +07:00
#### `ini-values` (optional)
2020-02-14 14:15:46 +07:00
- Specify the values you want to add to `php.ini`.
- Accepts a `string` in csv-format. For example `post_max_size=256M, short_open_tag=On`.
#### `coverage` (optional)
- Specify the code coverage driver you want to setup.
- Accepts `xdebug`, `pcov` or `none`.
- See [coverage support](#signal_strength-coverage-support) for more info.
#### `tools` (optional)
- Specify the tools you want to setup.
- Accepts a `string` in csv-format. For example `phpunit, phpcs`
- See [tools Support](#wrench-tools-support) for tools supported.
See below for more info.
### Basic Setup
2019-12-09 14:10:12 +07:00
2019-12-18 23:14:02 +07:00
> Setup a particular PHP version.
2019-09-06 07:18:51 +07:00
```yaml
steps:
- name: Checkout
2020-01-02 00:06:25 +07:00
uses: actions/checkout@v2
2019-10-19 21:29:48 +07:00
- name: Setup PHP
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
2019-09-06 07:18:51 +07:00
with:
2019-11-30 06:53:14 +07:00
php-version: '7.4'
2020-02-14 14:15:46 +07:00
extensions: mbstring, intl
ini-values: post_max_size=256M, short_open_tag=On
coverage: xdebug
tools: php-cs-fixer, phpunit
2019-09-06 07:18:51 +07:00
```
2019-12-18 23:14:02 +07:00
### Matrix Setup
2019-12-09 14:10:12 +07:00
2019-12-18 23:14:02 +07:00
> Setup multiple PHP versions on multiple operating systems.
2019-09-06 07:18:51 +07:00
```yaml
jobs:
run:
2019-09-06 07:18:51 +07:00
runs-on: ${{ matrix.operating-system }}
strategy:
2019-09-06 07:18:51 +07:00
matrix:
2020-01-21 09:55:14 +07:00
operating-system: [ubuntu-latest, windows-latest, macos-latest]
2019-11-30 06:53:14 +07:00
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4']
2019-09-06 08:52:50 +07:00
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
2019-09-06 07:18:51 +07:00
steps:
- name: Checkout
2020-01-02 00:06:25 +07:00
uses: actions/checkout@v2
2019-10-19 21:29:48 +07:00
- name: Setup PHP
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
2019-09-06 07:18:51 +07:00
with:
2019-11-07 16:32:05 +07:00
php-version: ${{ matrix.php-versions }}
2020-02-14 14:15:46 +07:00
extensions: mbstring, intl
ini-values: post_max_size=256M, short_open_tag=On
coverage: xdebug
tools: php-cs-fixer, phpunit
2019-09-06 07:18:51 +07:00
```
### Experimental Setup
2019-12-18 23:14:02 +07:00
> Setup a nightly build of `PHP 8.0.0-dev` from the [master branch](https://github.com/php/php-src/tree/master "Master branch on PHP source repository") of PHP.
- This version is currently in development and is an experimental feature on this action.
- `PECL` is installed by default with this version on `ubuntu`.
- Some extensions might not support this version currently.
- Refer to this [RFC](https://wiki.php.net/rfc/jit "PHP JIT RFC configuration") for configuring `PHP JIT` on this version.
2019-12-28 01:53:51 +07:00
- Refer to this [list of RFCs](https://wiki.php.net/rfc#php_80 "List of RFCs implemented in PHP8") implemented in this version.
2019-12-18 23:14:02 +07:00
```yaml
steps:
- name: Checkout
2020-01-02 00:06:25 +07:00
uses: actions/checkout@v2
2019-12-18 23:14:02 +07:00
- name: Setup PHP
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
2019-12-18 23:14:02 +07:00
with:
php-version: '8.0'
2020-02-14 14:15:46 +07:00
extensions: mbstring
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
coverage: pcov
tools: php-cs-fixer, phpunit
2019-12-18 23:14:02 +07:00
```
2020-01-21 09:31:10 +07:00
### Thread Safe Setup
- `NTS` versions are setup by default.
2020-02-29 22:38:26 +07:00
- On `ubuntu` and `macOS` only `NTS` versions are supported.
2020-01-21 09:31:10 +07:00
- On `windows` both `TS` and `NTS` versions are supported.
```yaml
jobs:
run:
runs-on: windows-latest
name: Setup PHP TS on Windows
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup PHP
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
2020-01-21 09:31:10 +07:00
with:
php-version: '7.4'
env:
PHPTS: ts # specify ts or nts
```
2020-02-14 14:15:46 +07:00
### Force Update
2020-02-29 22:38:26 +07:00
- Pre-installed PHP versions on the GitHub Actions runner are not updated to their latest patch release by default.
2020-02-14 14:15:46 +07:00
- You can specify the `update` environment variable to `true` to force update to the latest release.
```yaml
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
env:
update: true # specify true or false
```
### Verbose Setup
2020-02-29 22:38:26 +07:00
To debug any issues, you can use the `verbose` tag instead of `v2`.
2020-02-14 14:15:46 +07:00
```yaml
- name: Setup PHP
uses: shivammathur/setup-php@verbose
with:
php-version: '7.4'
```
### Cache Extensions
2020-02-21 15:09:04 +07:00
You can cache PHP extensions using [`shivammathur/cache-extensions`](https://github.com/shivammathur/cache-extensions "GitHub Action to cache php extensions") and [`action/cache`](https://github.com/actions/cache "GitHub Action to cache files") GitHub Actions. Extensions which take very long to setup if cached are available in the next workflow run and enabled directly which reduces the workflow execution time.
2020-02-14 14:15:46 +07:00
```yaml
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest, windows-latest, macos-latest]
php-versions: ['7.2', '7.3', '7.4']
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
env:
extensions: intl, pcov
key: cache-v1 # can be any string, change to clear the extension cache.
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup cache environment
id: cache-env
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
key: ${{ env.key }}
- name: Cache extensions
uses: actions/cache@v1
with:
path: ${{ steps.cache-env.outputs.dir }}
key: ${{ steps.cache-env.outputs.key }}
restore-keys: ${{ steps.cache-env.outputs.key }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
```
2020-02-29 22:38:26 +07:00
**Note:** If you setup both `TS` and `NTS` PHP versions on `windows`, add `${{ env.PHPTS }}` to `key` and `restore-keys` inputs in `actions/cache` step.
2020-02-14 14:15:46 +07:00
### Cache Composer Dependencies
2019-11-03 11:41:44 +07:00
2020-02-21 15:09:04 +07:00
If your project uses composer, you can persist composer's internal cache directory. Dependencies cached are loaded directly instead of downloading them while installation. The files cached are available across check-runs and will reduce the workflow execution time.
2019-11-05 06:28:15 +07:00
2019-11-03 11:41:44 +07:00
```yaml
2020-02-21 15:09:04 +07:00
- name: Get composer cache directory
2019-11-05 06:28:15 +07:00
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
2019-11-08 17:26:57 +07:00
- name: Cache dependencies
2019-11-07 03:01:01 +07:00
uses: actions/cache@v1
2019-11-05 06:28:15 +07:00
with:
path: ${{ steps.composer-cache.outputs.dir }}
2019-11-05 06:28:15 +07:00
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
2019-11-08 17:26:57 +07:00
2020-02-21 15:09:04 +07:00
- name: Install dependencies
2019-11-05 06:28:15 +07:00
run: composer install --prefer-dist
2019-11-03 11:41:44 +07:00
```
2020-02-29 22:38:26 +07:00
**Notes**
- Please do not cache `vendor` directory using `action/cache` as that will have side-effects.
- In the above example, if you support a range of `composer` dependencies and do not commit `composer.lock`, you can use the hash of `composer.json` as the key for your cache.
2019-12-28 01:53:51 +07:00
```yaml
2020-02-21 15:09:04 +07:00
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
```
### Cache Node.js Dependencies
2020-02-29 22:38:26 +07:00
If your project has node.js dependencies, you can persist npm's or yarn's cache directory. The cached files are available across check-runs and will reduce the workflow execution time.
2020-02-21 15:09:04 +07:00
```yaml
- name: Get node.js cache directory
id: node-cache-dir
run: echo "::set-output name=dir::$(npm config get cache)" # Use $(yarn cache dir) for yarn
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.node-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} # Use '**/yarn.lock' for yarn
restore-keys: ${{ runner.os }}-node-
```
2019-12-28 01:53:51 +07:00
2020-02-29 22:38:26 +07:00
**Note:** Please do not cache `node_modules` directory as that will have side-effects.
2019-12-19 04:08:12 +07:00
### Problem Matchers
2020-02-14 14:15:46 +07:00
#### PHP
Setup problem matchers for your `PHP` output by adding this step after the `setup-php` step. This will scan the logs for PHP errors and warnings, and surface them prominently in the GitHub Actions UI by creating annotations and log file decorations.
```yaml
2020-02-21 15:09:04 +07:00
- name: Setup problem matchers for PHP
2020-02-14 14:15:46 +07:00
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
```
2020-02-03 04:56:06 +07:00
#### PHPUnit
2020-02-14 14:15:46 +07:00
Setup problem matchers for your `PHPUnit` output by adding this step after the `setup-php` step. This will scan the logs for failing tests and surface that information prominently in the GitHub Actions UI by creating annotations and log file decorations.
2019-12-19 04:08:12 +07:00
```yaml
2020-02-21 15:09:04 +07:00
- name: Setup problem matchers for PHPUnit
2019-12-19 04:08:12 +07:00
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
```
2020-02-14 14:15:46 +07:00
#### Other Tools
2020-02-03 04:56:06 +07:00
For tools that support `checkstyle` reporting like `phpstan`, `psalm`, `php-cs-fixer` and `phpcs` you can use `cs2pr` to annotate your code.
For examples refer to [cs2pr documentation](https://github.com/staabm/annotate-pull-request-from-checkstyle).
> Here is an example with `phpstan`.
```yaml
- name: Setup PHP
2020-02-14 14:15:46 +07:00
uses: shivammathur/setup-php@v2
2020-02-03 04:56:06 +07:00
with:
php-version: '7.4'
tools: cs2pr, phpstan
- name: PHPStan
run: phpstan analyse src --error-format=checkstyle | cs2pr
```
2019-10-03 17:43:34 +07:00
### Examples
Examples for setting up this GitHub Action with different PHP Frameworks/Packages.
2019-10-03 17:43:34 +07:00
2019-10-10 19:17:17 +07:00
|Framework/Package|Runs on|Workflow|
|--- |--- |--- |
2020-02-28 17:12:17 +07:00
|Blackfire|`macOS`, `ubuntu` and `windows`|[blackfire.yml](./examples/blackfire.yml "GitHub Action using Blackfire")|
|Blackfire Player|`macOS`, `ubuntu` and `windows`|[blackfire-player.yml](./examples/blackfire-player.yml "GitHub Action using Blackfire Player")|
2020-01-08 14:24:37 +07:00
|CakePHP with `MySQL` and `Redis`|`ubuntu`|[cakephp-mysql.yml](./examples/cakephp-mysql.yml "GitHub Action for CakePHP with MySQL and Redis")|
|CakePHP with `PostgreSQL` and `Redis`|`ubuntu`|[cakephp-postgres.yml](./examples/cakephp-postgres.yml "GitHub Action for CakePHP with Postgres and Redis")|
|CakePHP without services|`macOS`, `ubuntu` and `windows`|[cakephp.yml](./examples/cakephp.yml "GitHub Action for CakePHP without services")|
2019-10-10 19:17:17 +07:00
|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")|
|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 11:18:29 +07:00
|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")|
|Roots/bedrock|`ubuntu`|[bedrock.yml](./examples/bedrock.yml "GitHub Action for Wordpress Development using @roots/bedrock")|
|Roots/sage|`ubuntu`|[sage.yml](./examples/sage.yml "GitHub Action for Wordpress Development using @roots/sage")|
2019-10-10 19:17:17 +07:00
|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")|
|Symfony without services|`macOS`, `ubuntu` and `windows`|[symfony.yml](./examples/symfony.yml "GitHub Action for Symfony without services")|
2019-10-10 19:17:17 +07:00
|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 17:43:34 +07:00
## :scroll: License
2020-02-20 05:45:24 +07:00
The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/setup-php"). This project has multiple [dependencies](#bookmark-dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
## :+1: Contributions
2019-09-06 07:18:51 +07:00
2019-11-03 11:41:44 +07:00
Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/setup-php contribution guide"). If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/setup-php/issues "Issues reported").
2019-09-06 07:18:51 +07:00
2020-02-14 14:15:46 +07:00
## :sparkling_heart: Support This Project
2019-11-03 11:41:44 +07:00
If this action helped you.
2020-02-29 22:38:26 +07:00
- To support this project subscribe on [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") or sponsor using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal").
2020-01-26 16:42:52 +07:00
- Please star the project and share it with the community.
2020-02-21 15:09:04 +07:00
- If you blog, write about your experience of using this action.
2020-01-26 16:42:52 +07:00
- If you need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")
2020-02-14 14:15:46 +07:00
## :bookmark: Dependencies
2020-02-14 14:15:46 +07:00
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")
- [gplessis/dotdeb-php](https://github.com/gplessis/dotdeb-php "Packaging for end of life PHP versions")
2019-12-09 09:39:03 +07:00
- [mlocati/powershell-phpmanager](https://github.com/mlocati/powershell-phpmanager "Package to handle PHP on windows")
2020-02-14 14:15:46 +07:00
- [ppa:ondrej/php](https://launchpad.net/~ondrej/+archive/ubuntu/php "Packaging active PHP packages")
- [shivammathur/cache-extensions](https://github.com/shivammathur/cache-extensions "GitHub action to help with caching PHP extensions")
2019-12-09 09:39:03 +07:00
- [shivammathur/homebrew-php](https://github.com/shivammathur/homebrew-php "Tap for PHP builds for MacOS")
2020-02-14 14:15:46 +07:00
- [shivammathur/php-builder](https://github.com/shivammathur/php-builder "Nightly PHP package")
2020-02-29 22:38:26 +07:00
- [shivammathur/php5-darwin](https://github.com/shivammathur/php5-darwin "Scripts to setup PHP5 versions on darwin")
- [shivammathur/php5-ubuntu](https://github.com/shivammathur/php5-ubuntu "Scripts to setup PHP5 versions on ubuntu")
## :bookmark_tabs: Further Reading
2019-09-06 07:18:51 +07:00
2019-10-10 19:17:17 +07:00
- [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")