a2099156ec
So now we have only packages for human interaction in php.packages and only extensions in php.extensions. With this php.packages.exts have been merged into the same attribute set as all the other extensions to make it flat and nice. The nextcloud module have been updated to reflect this change as well as the documentation.
65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
# PHP
|
|
|
|
## User Guide
|
|
|
|
### Using PHP
|
|
|
|
#### Overview
|
|
|
|
Several versions of PHP are available on Nix, each of which having a
|
|
wide variety of extensions and libraries available.
|
|
|
|
The attribute `php` refers to the version of PHP considered most
|
|
stable and thoroughly tested in nixpkgs for any given release of
|
|
NixOS. Note that while this version of PHP may not be the latest major
|
|
release from upstream, any version of PHP supported in nixpkgs may be
|
|
utilized by specifying the desired attribute by version, such as
|
|
`php74`.
|
|
|
|
Only versions of PHP that are supported by upstream for the entirety
|
|
of a given NixOS release will be included in that release of
|
|
NixOS. See [PHP Supported
|
|
Versions](https://www.php.net/supported-versions.php).
|
|
|
|
For packages we have `php.packages` that contains packages related
|
|
for human interaction, notable example is `php.packages.composer`.
|
|
|
|
For extensions we have `php.extensions` that contains most upstream
|
|
extensions as separate attributes as well some additional extensions
|
|
that tend to be popular, notable example is: `php.extensions.imagick`.
|
|
|
|
The different versions of PHP that nixpkgs fetch is located under
|
|
attributes named based on major and minor version number; e.g.,
|
|
`php74` is PHP 7.4 with commonly used extensions installed,
|
|
`php74base` is the same PHP runtime without extensions.
|
|
|
|
#### Installing PHP with packages
|
|
|
|
There's two majorly different parts of the PHP ecosystem in NixOS:
|
|
- Command line utilities for human interaction. These comes from the
|
|
`php.packages.*` attributes.
|
|
- PHP environments with different extensions enabled. These are
|
|
composed with `php.buildEnv` using an additional configuration file.
|
|
|
|
##### Example setup for `phpfpm`
|
|
|
|
Example to build a PHP with the extensions `imagick` and `opcache`
|
|
enabled. Then to configure it for the "foo" `phpfpm` pool:
|
|
|
|
```nix
|
|
let
|
|
myPhp = php.buildEnv { exts = pp: with pp; [ imagick opcache ]; };
|
|
in {
|
|
services.phpfpm.pools."foo".phpPackage = myPhp;
|
|
};
|
|
```
|
|
|
|
##### Example usage with `nix-shell`
|
|
|
|
This brings up a temporary environment that contains a PHP interpreter
|
|
with the extensions `imagick` and `opcache` enabled.
|
|
|
|
```sh
|
|
nix-shell -p 'php.buildEnv { exts = pp: with pp; [ imagick opcache ]; }'
|
|
```
|