Menjalankan php 5.6 Dan php 7.2 dengan Apache Di macOS


Tutorial sebelumnya saya telah menulis mengenai cara menjalankan php5.6 dan php7.2 secara bersamaan, khusus untuk pengguna GNU/Linux distro Ubuntu. Sekarang giliran macOS.

Kebutuhan

  • Sudah memasang brew atau homebrew (https://brew.sh/).

  • Sistem Operasi macOS 10.11 (EL Capitan) atau lebih. Dalam praktek di sini, saya menggunakan macOS HighSierra.

Persiapan

  • Koneksi internet.

  • vim dan paham dasar penggunaannya.

  • Secara default HighSierra sudah terdapat php71 dan apache mereka perlu dinonaktifkan, kita cukup gunakan php dan apache bawaan dari brew.

    Adapun caranya sebagai berikut:

      $ sudo apachectl stop
      $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
    
  • Buat direktori Web dan logs di Home kalian. Caranya:

      $ mkdir -p ~/Web/logs
    
  • Mengetahui User dan Group yang kalian gunakan. Caranya sebagai berikut:

      $ ls -l ~/
    

    Hasilnya seperti berikut:

    Terlihat hasil di atas bahwa user yang digunakan adalah ali sedangkan group-nya adalah staff.

Pemasangan

Pasang vimphp terbaru, php56 dan apache

$ brew install vim
$ brew install php
$ brew install php56
$ brew install httpd

Buat symlink php56 dan pecl-nya

$ ln -s /usr/local/opt/php@5.6/bin/php /usr/local/bin/php56
$ ln -s /usr/local/opt/php@5.6/bin/pecl /usr/local/bin/pecl56

Konfigurasi

Buat Host

$ vim /etc/hosts

Isi host-nya seperti berikut:

FILE/etc/hosts
127.0.0.1 localhost.php5
127.0.0.1 localhost.php7

PHP-FPM

Karena dua php ingin dijalankan secara bersamaan maka port keduanya harus berbeda. Di sini, saya menggunakan php56 berjalan dengan port 9000 sedangkan php72 dengan port 9010.

Konfigurasi php56

$ vim /usr/local/etc/php/5.6/php-fpm.conf

Sunting skrip seperti berikut:

FILE/usr/local/etc/php/5.6/php-fpm.conf
...

[www]

user = ali
group = staff
listen = 127.0.0.1:9000

...

Konfigurasi php72

$ vim /usr/local/etc/php/7.2/php-fpm.d/www.conf

Sunting skrip seperti berikut:

FILE/usr/local/etc/php/7.2/php-fpm.d/www.conf
...

[www]

user = ali
group = staff
listen = 127.0.0.1:9010

...

Apache

Buka berkas httpd.conf di /usr/local/etc/httpd/httpd.conf

$ vim /usr/local/etc/httpd/httpd.conf

Ganti port 8080 menjadi 80 dan tambahkan ServerName-nya kira-kira seperti berikut:

FILE/usr/local/etc/httpd/httpd.conf
...

Listen 80
ServerName 127.0.0.1

....

Aktifkan modul-modul berikut dengan meng-uncomment:

FILE/usr/local/etc/httpd/httpd.conf
...

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so
LoadModule proxy_module lib/httpd/modules/mod_proxy.so

...

Virtual Host

Kemudian aktifkan virtual host:

FILE/usr/local/etc/httpd/httpd.conf
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf

Sunting virtual host nya:

$ vim /usr/local/etc/httpd/extra/httpd-vhosts.conf

Isi dengan skrip di bawah ini:

FILE/usr/local/etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
    ServerName localhost.php5
    DocumentRoot "/Users/ali/Web/"
    ServerAdmin admin@situsali.com

    <Directory /Users/ali/Web/>
        #DirectoryIndex index.php index.html
        Options Indexes MultiViews FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/ali/Web/$1

    ErrorLog /Users/ali/Web/logs/php56-error.log
    CustomLog /Users/ali/Web/logs/php56-access.log combined

    RewriteEngine on
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
</VirtualHost>

<VirtualHost *:80>
    ServerName localhost
    ServerAlias localhost.php7
    DocumentRoot "/Users/ali/Web/"
    ServerAdmin admin@situsali.com

    <Directory /Users/ali/Web/>
        #DirectoryIndex index.php index.html
        Options Indexes MultiViews FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9010/Users/ali/Web/$1

    ErrorLog /Users/ali/Web/logs/php72-error.log
    CustomLog /Users/ali/Web/logs/php72-access.log combined

    RewriteEngine on
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
</VirtualHost>

Catatan

Jika ingin langsung mengekskusi index.php uncomment DirectoryIndex pada skrip di atas.

Tahap Menjalankan

Jika semua sudah selesai dikonfigurasi langkah selanjutnya tinggal kita jalankan. Sebelum dijalankan pastikan cek dulu keberhasilan konfigurasinya. Dengan cara berikut:

$ apachectl configtest

Jika hasilnya seperti berikut:

Artinya konfigurasi apache sudah sukses. Kita tinggal jalankan.

$ sudo brew services install httpd

Jalankan juga php-nya:

$ sudo brew services install php
$ sudo brew services install php56

Cek jika semua sudah berjalan:

$ brew services list

Semua sudah berjalan, langkah selanjutnya kita buat berkas php untuk mengatahui ia sudah berjalan atau belum.

$ echo "<?php phpinfo();" > ~/Web/info.php

Nah tinggal tes diperamban kalian. Tautan-tauan berikut:

Hasilnya seperti berikut:

Semoga bermanfaat :D