PHP 8.0 added new modern features such us: Union Types,Named arguments, Match expressions, Just In Time Compilation and others
Today we are going to install PHP 8.0 on NetBSD 9.1.
Links of interest:
- How to Compile PHP 8.0 in Debian 10?
- How to install PHP 7.4 in Ubuntu 20.04?
- How to compile PHP from the source code
- PHP new features
- pkgin, a NetBSD package manager
Install PHP and PHP-FPM
PHP-FPM is used together with a web server like Apache or NGINX, PHP-FPM serves dynamic content, while the web server serve static content and act like a reverse proxy in front of PHP-FPM.
PHP-FPM introduces the concept of pools, each pool can receive connections on a TPC/IP (IP:Port) socket or on a UNIX socket, and can run under a different user and group also each pool has its configuration file, to install PHP and PHP-FPM execute the following command:
# pkgin install php80-fpm
calculating dependencies...done.
6 packages to install:
php80-fpm-8.0.3nb5 readline-8.1 php-8.0.3 pcre2-10.36 libxml2-2.9.10nb3 xmlcatmgr-2.2nb1
0 to refresh, 0 to upgrade, 6 to install
10M to download, 69M to install
proceed ? [Y/n]
After the installation process finish, you can find the configuration files under this directory structure.
/usr/pkg/etc/
|-- php-fpm.conf
|-- php-fpm.d
| `-- www.conf
|-- php.ini
Show installed version
# php -v
PHP 8.0.3 (cli) (built: Mar 29 2021 07:45:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.3, Copyright (c) Zend Technologies
List modules
# php -m
php -m
[PHP Modules]
Core
ctype
date
dom
...
Show all available modules:
# pkgin search '^php80\-'
...
php80-bz2-8.0.3 PHP extension for bzip2 compression
php80-calendar-8.0.3 PHP extension for calendar conversion support
php80-composer-2.0.11 Dependency Manager for PHP
php80-curl-8.0.3nb9 PHP extension for curl functions
...
To install a module execute:
# pkgin install php80-curl
calculating dependencies...done.
8 packages to install:
php80-curl-8.0.3nb9 curl-7.76.0 nghttp2-1.43.0 libidn2-2.3.0 libunistring-0.9.10 python38-3.8.8
libuuid-2.32.1 libffi-3.3nb4
0 to refresh, 0 to upgrade, 8 to install
39K to download, 105M to install
proceed ? [Y/n]
Manage the PHP-FPM service
In this section we learn how to start, restart and stop the php-fpm service, for this task we are going to use the excelent tools: init, rc and service.
Add init script
The php80-fpm package provides us and example script located under /usr/pkg/share/examples/rc.d/php_fpm and we can use it as our init script copying it to /etc/rc.d/php_fpm.
# cp -v /usr/pkg/share/examples/rc.d/php_fpm /etc/rc.d/
/usr/pkg/share/examples/rc.d/php_fpm -> /etc/rc.d/php_fpm
Automatic start
I love how *BSD handle services automatic start, simply add to the /etc/rc.conf file this line:
php_fpm=YES
The above line instructs to the init system that the php_fpm will start automatically after a system reboot.
Check status
# service php_fpm status
php_fpm is not running.
Start
# service php_fpm start
Starting php_fpm.
Check the status again :
# service php_fpm status
php_fpm is running as pid 1995.
Restart
If you did any modification to the configuration files you need to refresh the changes with:
# service php_fpm restart
Stopping php_fpm.
Starting php_fpm.
In the next post we are going to show how to integrate PHP-FPM with NGINX.