Hướng dẫn sử dụng nhiều phiên bản PHP trên Apache

Cài đặt server Apache có thể chạy đồng thời nhiều phiên bản PHP khác nhau. Cách này sẽ giúp bạn tránh khỏi những bất tiện chẳng hạn khi muốn chuyển đổi về hệ thống cũ để kiểm tra chức năng.

xcode-select –install

Để cài HomeBrew, hãy bật Terminal và sử dụng câu lệnh sau:

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Sau khi câu lệnh được thực thi tức là bạn đã cài đặt thành công HomeBrew:

1. Cài đặt Apache

Với Mac OS X thì Apache đã được cài sẵn và việc của chúng ta chính là bật lên và sử dụng. Khởi động Apache trong Mac OS X bằng cách sử dụng câu lệnh dưới đây:

$ sudo apachectl start

Nếu bạn muốn ngừng Apache thì sử dụng lệnh:

$ sudo apachectl stop

Để restart Apache thì sử dụng lệnh:

$ sudo apachectl -k restart

hoặc sử dụng câu lệnh cho Ubuntu như sau:

sudo apt-get update
sudo apt-get install apache2

2. Cấu hình Apache

Để sử dụng multi-version PHP thì bạn cần bật một số extension cho Apache như sau:

  • mod_rewrite
  • mod_alias
  • mod_vhost_alias
  • mod_fcgid

Để bật các extension cho Apache bạn làm theo cách dưới đây:

  • Mở và sửa file /etc/apache2/httpd.conf với quyền sudo.
  • Tìm đến module cần bật. Xem ví dụ dưới đây:

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

  • Xóa # để kích hoạt extension
  • Khởi động lại Apache

3. Cài đặt PHP

Để sử dụng nhiều phiên bản PHP trên cùng 1 server Apache đồng nghĩa với việc bạn phải cài nhiều phiên bản PHP. Và để cài php trên MacOSX khá dễ dàng với HomeBrew (trên Linux Ubuntu cũng rất dễ với apt-get )

Cách cài đặt như sau:

  • Bật Terminal.
  • Sử dụng lệnh dưới đây để cài PHP:

*

  • $ brew tap homebrew/dupes
  • $ brew tap homebrew/versions
  • $ brew tap homebrew/homebrew-php
  • $ brew install php54
  • $ brew unlink php54
  • $ brew install php55
  • $ brew unlink php55
  • $ brew install php56
  • $ brew unlink php56
  • $ brew install php70

Sau khi dùng các lệnh trên bạn đã có trong tay PHP 5.4, 5.4, 5.6, 7.0. Và cũng sẽ có các file cấu hình php.ini tương ứng cho từng version PHP tại:

  • /usr/local/etc/php/5.4/php.ini
  • /usr/local/etc/php/5.5/php.ini
  • /usr/local/etc/php/5.6/php.ini
  • /usr/local/etc/php/7.0/php.ini

Và bạn cũng sẽ có các folder chứa PHP tương ứng như sau:

  • /usr/local/Cellar/php54/…
  • /usr/local/Cellar/php55/…
  • /usr/local/Cellar/php56/…
  • /usr/local/Cellar/php70/…

Với Linux thì cách cài đặt và đường dẫn sẽ khác 1 chút.

Cài đặt Apache để chạy đa phiên bản PHP
Cài đặt mod-fcgid
Sử dụng câu lệnh sau để cài đặt:

$ brew install mod_fcgid

Sau khi cài đặt thành công bạn sẽ có mod_fcgid tại thư mục /usr/local/Cellar/mod_fcgid.

3. Kích hoạt mod_fcgid trong Apache

Để kích hoạt mod_fcgid bạn cần làm theo các bước sau:

  • Mở file /etc/apache2/httpd.conf
  • Thêm các dòng sau vào cuối file:

LoadModule fcgid_module /usr/local/Cellar/mod_fcgid/2.3.9/libexec/mod_fcgid.so

<IfModule fcgid_module>

AddHandler fcgid-script .fcgi .fpl

FcgidConnectTimeout 20

FcgidMaxRequestLen 268435456

FcgidMaxProcessesPerClass 10

FcgidIOTimeout 300

</IfModule>

  • Khởi động lại Apache

4.Tạo PHP Launcher với code fcgi

Tạo folder chứa PHP Laucher
Mình sẽ tạo 1 folder cgi-bin để chứa launcher. Bật Terminal gõ lệnh:

$ mkdir /usr/local/bin/cgi-bin

– Set owner và phân quyền (permission) cho folder cgi-bin

  • $ sudo sudo chown -R _www:_www /usr/local/bin/cgi-bin
  • $ sudo chmod -R 775 /usr/local/bin/cgi-bin

5. Tạo script laucher

Để chạy được nhiều phiên bản PHP khác nhau, bạn cần phải tạo các script cho từng phiên bản php khác nhau.

Chẳng hạn tạo laucher cho PHP 5.4 bằng cách:

  • Tạo file php54.fcgi tại /usr/local/bin/cgi-bin
  • Nhập nội dung:

#!/bin/bash

exec /usr/local/Cellar/php54/5.4.xxxx/bin/php-cgi

  • Phân quyền cho file bằng lệnh sau:

$ sudo sudo chown _www:_www /usr/local/bin/cgi-bin/php54.fcgi

$ sudo chmod 775 /usr/local/bin/cgi-bin/php54.fcgi

Làm tương tự cho các version khác bằng cách thay đổi nội dung script bằng đường dẫn đến folder chứa PHP tương ứng:

Khi đó ta sẽ có các script laucher như sau:

  • /usr/local/bin/cgi-bin/php54.fcgi
  • /usr/local/bin/cgi-bin/php55.fcgi
  • /usr/local/bin/cgi-bin/php56.fcgi
  • /usr/local/bin/cgi-bin/php70.fcgi

6. Cài đặt vhost cho Apache

Dưới đây là cách cài đặt kèm với phiên bản PHP cho từng dự án:

<VirtualHost *:80>

ServerAdmin webmaster@testphp54

DocumentRoot “/Users/tpro/Framgia/testphp54”

ServerName testphp54

CustomLog “/private/var/log/apache2/testphp54-access_log” common

ErrorLog “/private/var/log/apache2/testphp54-error_log”

<Directory “/Users/tpro/Framgia/testphp54”>

Options Indexes FollowSymLinks Multiviews

MultiviewsMatch Any

AllowOverride All

Require all granted

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

Config cho việc gọi launcher PHP bằng cách thêm dòng FcgidWrapper /usr/local/bin/cgi-bin/php54.fcgi .php và SetHandler cho các file php bằng cách thêm đoạn sau:

<FilesMatch \.php$>

SetHandler fcgid-script

</FilesMatch>

Và bật thực thi ExecCGI vào Options trong Directory
Kết quả sẽ nhận được như sau:

<VirtualHost *:80>

ServerAdmin webmaster@testphp54

DocumentRoot “/Users/tpro/Framgia/testphp54”

ServerName testphp54

CustomLog “/private/var/log/apache2/testphp54-access_log” common

ErrorLog “/private/var/log/apache2/testphp54-error_log”

FcgidWrapper /usr/local/bin/cgi-bin/php53.fcgi .php

<Directory “/Users/tpro/Framgia/testphp54”>

<FilesMatch \.php$>

SetHandler fcgid-script

</FilesMatch>

Options Indexes FollowSymLinks Multiviews ExecCGI

MultiviewsMatch Any

AllowOverride All

Require all granted

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

Vậy là hoàn thành việc cài đặt php theo từng project (vhost) Để thay đổi phiên bản khác bạn chỉ cần đổi tên laucher /usr/local/bin/cgi-bin/php53.fcgi thành /usr/local/bin/cgi-bin/php70.fcgi

Để hệ thống tự nhận file index.php bạn cần phải thêm index.php vào sau DirectoryIndex index.html trong file httpd.conf của Apache như sau:

<IfModule dir_module>

DirectoryIndex index.html index.php

</IfModule>

Sau khi thực hiện các bước trên bạn đã có 1 server Apache chạy đa phiên bản PHP.

Chúc bạn cài đặt thành công!

Leave a Reply