PHP

Before starting: Make sure you have the necessary folders and permissions — get more information.

Links: Homepage | Documentation | Downloads
Dependencies: Apache | LibJPEG | LibPNG | OpenSSL
Version: 7.2.11

PHP is a general-purpose server-side scripting language that is especially suited to web development.

Get the Code

Switch to /usr/local/src and download the source package.

cd /usr/local/src
curl --location --output php-VERSION.tar.gz http://ca3.php.net/get/php-VERSION.tar.gz/from/this/mirror

Extract the archive and move into the folder.

tar -xzvf php-VERSION.tar.gz
cd php-VERSION

Compile and Install

Need to install some missing headers in macOS Mojave (if not already installed).

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

Configure, compile and install into /usr/local/mac-dev-env/php-VERSION.

./configure \
  --prefix=/usr/local/mac-dev-env/php-VERSION \
  --with-config-file-path=/usr/local/mac-dev-env/php-VERSION/etc \
  --enable-bcmath \
  --enable-mbstring \
  --enable-sockets \
  --enable-zip \
  --with-apxs2=/usr/local/apache/bin/apxs \
  --with-bz2 \
  --with-curl \
  --with-gd \
  --with-imap-ssl \
  --with-jpeg-dir=/usr/local/libjpeg \
  --with-mysqli \
  --with-pear \
  --with-pdo-mysql \
  --with-png-dir=/usr/local/libpng \
  --with-openssl=/usr/local/openssl \
  --with-xmlrpc \
  --with-xsl \
  --with-zlib
make
make install

Create a symbolic link to /usr/local/php.

sudo ln -s mac-dev-env/php-VERSION /usr/local/php

PHP Configuration

Copy a PHP configuration template to the target folder. You can configure any of the php.ini directives by editing this file.

cp php.ini-development /usr/local/mac-dev-env/php-VERSION/etc/php.ini

Set the location of the php.ini configuration file for PECL and PEAR.

/usr/local/mac-dev-env/php-VERSION/bin/pecl config-set php_ini /usr/local/mac-dev-env/php-VERSION/etc/php.ini
/usr/local/mac-dev-env/php-VERSION/bin/pear config-set php_ini /usr/local/mac-dev-env/php-VERSION/etc/php.ini

Apache Configuration

Edit Apache's configuration file.

nano /usr/local/apache/conf/httpd.conf

Copy and paste the following text at the end of the aforementioned file.

<IfModule mime_module>
  AddType application/x-httpd-php .php
</IfModule>
<IfModule dir_module>
  DirectoryIndex index.html index.php
</IfModule>

Shell

Execute the following lines to update your Bash startup script.

echo 'export PATH=/usr/local/php/bin:$PATH' >> ~/.bash_profile
echo 'export MANPATH=/usr/local/php/php/man:$MANPATH' >> ~/.bash_profile

Load the new shell configurations.

source ~/.bash_profile

Restart the Web Server

The web server must be restarted for the changes to take effect.

sudo apachectl restart

Verify the Installation

Verify that you have successfully installed PHP.

php --version