Cài đặt PHP multi version trên macOS với Homebrew

Cài đặt PHP multi version trên macOS với Homebrew. Ở môi trường lập trình chúng ta có thể chạy trên các phiên bản php khác nhau để kiểm tra code php trước khi đưa lên chạy thực ở server.

PHP 7.3 là phiên bản mới tại thời điểm hiện tại, phiên bản trước đó là phiên bản PHP 5.6, PHP 7 được thiết kế lại cho tốc độ xử lý nhanh hơn so với các phiên bản cũ. Tuy nhiên ở bài viết này mình sẽ chỉ sử dụng phiên bản php 5.6 và 7.2 vì sự thông dụng của nó.

Cài đặt PHP

Cài đặt phiên bản php 5.6 chúng ta sử dụng lệnh sau

brew install php@5.6

Cài đặt phiên bản php 7.2 chúng ta sử dụng lệnh sau

brew install php@7.2

Sau khi cài xong chúng ta sẽ có thư mục như sau:

Bây giờ chúng ta sẽ tiếp tục cấu hình để có thể chạy php.

Cấu hình PHP trên macOS

Mở file /usr/local/etc/php/5.6/php-fpm.conf

Tìm:

user = _www
group = _www

Thay bằng

user = nginx
group = nginx

Tìm:

listen = 127.0.0.1:9000

Thay bằng

listen = 127.0.0.1:9056

Mở file /usr/local/etc/php/7.2/php-fpm.d/www.conf

Tìm:

user = _www
group = _www

Thay bằng

user = nginx
group = nginx

Tìm:

listen = 127.0.0.1:9000

Thay bằng

listen = 127.0.0.1:9072

Các lệnh điều khiển php

  • Khởi chạy php
brew services start php@5.6
brew services start php@7.2

Chạy lại php

brew services restart php@5.6
brew services restart php@7.2

Tắt php

brew services stop php@5.6
brew services stop php@7.2

Cấu hình host nginx với php

Các ban có thể tham khảo thêm Cấu hình cho host trên LEMP để biết thêm chi tiết về các cấu hình host. Ở đây mình hướng dẫn các bạn cấu hình để chạy multi version php.

Các bạn mở file /usr/local/etc/nginx/nginx.conf là file cấu hình mặc định của nginx:

Thay toàn bộ block:

server {
listen 8080;
server_name localhost;
...
}

Bằng đoạn block dưới

server {
    listen 8072;
    server_name localhost;
    location / {
        root html;
        index index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
         root html;
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9072;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Đoạn trên khai báo server localhost chạy trên cổng 8072, php được chạy qua cổng 9072 được config ở trên là phiên bản php 7.2 tương ứng. Tương tự ta bổ sung block khai báo để chạy php 5.6 qua cổng 8056

server {
    listen 8056;
    server_name localhost;
    location / {
        root html;
        index index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
         root html;
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9056;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Sau khi khai báo xong chúng ta khởi chạy lại nginx và chạy 2 phiên bản php. Tạo một file info.php ở thư mục gốc của nginx (/usr/local/var/www) chỉ có hàm phpinfo() để test.

Truy cập vào trình duyệt:

http://localhost:8056/info.php

Truy cập vào trình duyệt:

http://localhost:8072/info.php

Nếu hiện kết quả như hình trên coi như chúng ta đã cài đặt thành công multi version php.

Kết luận

Với cách cài đặt multi version php chúng ta có thể dễ dàng kiểm tra cũng như chạy các đoạn code php trên các phiên bản khác nhau mà không cần cài đặt những web server riêng. Ở bài tiếp theo mình sẽ hướng dẫn cài đặt hệ quản trị cơ sở dữ liệu MariaDB trên macOS với Homebrew để hoàn thành một môi trường cho lập trình viên web php.