59 lines
1.3 KiB
Markdown
59 lines
1.3 KiB
Markdown
# PHP Ansible Role
|
|
|
|
This Ansible role installs and configures PHP with support for multiple versions and custom modules for each version.
|
|
|
|
## Features
|
|
|
|
- Install multiple PHP versions simultaneously (e.g., PHP 8.3 and 8.4)
|
|
- Install single PHP version (just provide one version in the list)
|
|
- Configure different module lists for each PHP version
|
|
- Support for PHP-FPM
|
|
- Automatic repository setup (Sury repository for latest PHP versions)
|
|
|
|
## Requirements
|
|
|
|
- Ubuntu/Debian-based systems
|
|
- Ansible 2.9+
|
|
- sudo/root privileges
|
|
|
|
## Role Variables
|
|
|
|
### Configuration
|
|
|
|
```yaml
|
|
php_versions:
|
|
- version: "8.3"
|
|
modules:
|
|
- mysql
|
|
- gd
|
|
- xml
|
|
- mbstring
|
|
- zip
|
|
- version: "8.4"
|
|
modules:
|
|
- -mysql
|
|
- gd
|
|
- xml
|
|
- redis
|
|
- ip
|
|
```
|
|
|
|
## Installed Packages
|
|
|
|
For each PHP version, the following base packages are automatically installed:
|
|
|
|
- `php{version}-common`
|
|
- `php{version}-cli`
|
|
|
|
Additional modules are installed based on the `modules` list for each version.
|
|
|
|
## Notes
|
|
|
|
- The role uses the Sury repository to provide the latest PHP versions
|
|
- Each PHP version runs its own FPM service on different sockets/ports
|
|
- Module names should include the PHP version prefix (e.g., `php8.3-mysql`)
|
|
- For single version installations, just provide one entry in the `php_versions` list
|
|
|
|
## License
|
|
|
|
MIT |