PHP and MariaDB on OpenBSD
First, create a /etc/httpd.conf
configuration file.
server "default" { directory index "index.php" listen on * port 80 location "*.php" { fastcgi socket "/run/php-fpm.sock" } }
Next, enable and start httpd
.
# rcctl enable httpd
# rcctl start httpd
Then install PHP.
# pkg_add php
In order for httpd
to be able to run PHP scripts, the PHP FastCGI server must be enabled and started.
# rcctl enable php70_fpm
# rcctl start php70_fpm
As a test, accessing your server from a browser should work after creating a file /var/www/htdocs/index.php
with the following contents:
<?php
phpinfo();
Don't forget to delete this again after testing.
# rm /var/www/htdocs/index.php
Next, install and configure MariaDB.
# pkg_add mariadb-server php-pdo_mysql
MariaDB requires some initial configuration.
# rcctl enable mysqld
# rcctl start mysqld
# mysql_install_db --user=_mysql
# mysql_secure_installation
This must be done before changing the MariaDB socket (below).
Edit the file /etc/my.cnf
and change the socket
variable to /var/www/var/run/mysql/mysql.sock
in both the [client]
and [server]
sections in order to make it accessible to processes running with chroot
inside /var/www
.
This path places the socket at the correct location for adminer.
While you're here, you might want to enable skip-networking
if you don't intend to access your database remotely.
# rcctl restart mysqld
Activate the PDO database driver.
# ln -s ../php-7.0.sample/pdo_mysql.ini /etc/php-7.0/
Configure the PDO database driver accordingly to connect to the database at the correct socket. Note the missing /var/www
prefix due to the chroot
done by php70_fpm
!
# echo "pdo_mysql.default_socket=/var/run/mysql/mysql.sock" >> /etc/php-7.0/pdo_mysql.ini
# rcctl restart php70_fpm
Changes to the PHP configuration may require restarting the FastCGI server.
As pointed out in the PHP manual, if your web app needs to do DNS lookups it's going to need a copy of your /etc/resolv.conf
and /etc/services
.
# mkdir /var/www/etc
# cp /etc/resolv.conf /etc/services /var/www/etc
And likewise, in order to enable SSL connections:
# cp -R /etc/ssl /var/www/etc/
Then install any additional PHP modules your apps require.
# pkg_add php-curl php-zip
# rcctl restart php70_fpm