OpenBSD installation notes

Using Binary Packages

Using binary packages to install PHP on OpenBSD is the recommended
and simplest method. The core package has been separated from the various
modules, and each can be installed and removed independently from the others.
The files you need can be found on your OpenBSD CD or on the FTP site.

The main package you need to install is php,
which contains the basic engine (plus gettext and iconv). Next, take a look
at the module packages, such as php-mysql
or php-imap. You need to use the phpxs
command to activate and deactivate these modules in your php.ini.

Read the » packages(7)
manual page for more information about binary packages on OpenBSD.

Using Ports

You can also compile up PHP from source using the » ports tree.
However, this is only recommended for users familiar with OpenBSD. The PHP 4 port
is split into two sub-directories: core and extensions. The
extensions directory generates sub-packages for all of the supported
PHP modules. If you find you do not want to create some of these modules,
use the no_* FLAVOR. For example, to skip building
the imap module, set the FLAVOR to no_imap.

Common Problems

Apache and Nginx are no longer the default server on OpenBSD, but they can both be easily
found in ports and packages. The new default server is also called 'httpd'.

The default install of httpd runs inside a
» chroot(2) jail, which will restrict PHP scripts to
accessing files under /var/www. You will therefore need to create a
/var/www/tmp directory for PHP session files to be stored, or use an
alternative session backend. In addition, database sockets need to be placed inside the
jail or listen on the localhost interface. If you use network functions,
some files from /etc such as /etc/resolv.conf and
/etc/services will need to be moved into /var/www/etc.
The OpenBSD PEAR package automatically installs into the correct chroot directories.

The OpenBSD 5.7+ package for the » gd extension requires
XFree86 to be installed. This can be added post-installation (See OpenBSD FAQ#4) by adding
the xbase.tgz file set.

Older Releases

Older releases of OpenBSD used the FLAVORS system to compile up
a statically linked PHP. Since it is hard to generate binary packages using
this method, it is now deprecated. You can still use the old stable
ports trees if you wish, but they are unsupported by the OpenBSD team.
If you have any comments about this, the current maintainer for the port
is Anil Madhavapeddy (avsm at openbsd dot org).

User Contributed Notes 5 notes

A brief update: As of OpenBSD 5.7 (2015) the installation process is extremely easy. Apache httpd was replaced by Nginx, which has since been further replaced by OpenBSD's own server, aptly named 'httpd'.

'httpd' is installed by default, everything else you can still get from packages, with a couple name changes (including Apache and Nginx.) You will be asked which version to install - at the time of writing, versions 5.3.29p1 thru 5.6.5 are available.

#pkg_add php#pkg_add php-fpm#pkg_add pear

----OpenBSD disables most services by default; a blank '_flags' line overrides default 'NO' value. pkg_scripts are located in /etc/rc.d/To start at boot, edit "/etc/rc.conf.local":

I am user that is just migrating to open source and thought I would take openbsd for a spin. This article, by Gregory L. Magnusson, really helped me to get a working apache-php-mysql server going on openbsd.http://www.devx.com/security/Article/28059/0/page/1

I just finished spinning my wheels with PHP/Apache on OpenBSD 3.3, and it took a Google to fix my problem. I followed the instructions by (0429196301 at netcabo dot pt) written on Sep 19, 2003 and kept being fed a segmentation fault when I tried to start httpd.

Then I read the page cited below that suggested playing with the order of the LoadModules, and put the PHP first. I followed that recommendation and httpd started without problems!

"Change around the order of the Apache modules, this is one of thedrawbacks to the module API for Apache 1.3 is that the order is veryimportant. I would try making the PHP 4 module first, Perl module secondand FP module last. "

Also you should add "-a /var/www/dev/log" to the syslogd_flagsfor propper logging of php-extensions like imap.so and createa /var/www/etc/master.passwd with an www-user-entry and runpwd_mkdb -d /var/www/etc /var/www/etc/master.passwd for propperuse of libc-client.a functions in imap.so.