Dạo gần đây mình cần phải chuyển đổi liên tục giữa các phiên bản PHP trên máy của mình để làm việc.
Nếu các bạn đã từng gặp vấn đề như mình thì ít nhiều các bạn cũng quen với câu lệnh này:
Yeah, mình cũng làm như vậy. Nhưng mỗi lần chuyển đi chuyển lại, mình thấy lười quá.
Trong cái khó ló cái khôn. Mình dạo hết các diễn đàn tây ta các kiểu, cuối cùng mình tìm được một các khá hay.
Có thể cùng lúc chạy nhiều phiên bản PHP như thế này:
1 | $ php -v |
Các bạn có thể thấy, cùng lúc mình có thể dùng lệnh
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"1 để chạy cho bản PHP 8.1.1 và
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"2 để chạy cho bản PHP 7.4.27
Ngoài ra mình hoàn toàn có thể cài thêm PHP 7.1 và dùng lệnh
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"3
Bây giờ mình sẽ hướng dẫn các bạn cách thực hiện.
Cài đặt các công cụ hỗ trợ
Cài đặt công cụ XCode Command Line
1 | xcode-select --install |
Cài đặt Homebrew
Homebrew là một trình quản lý gói cho macOS. Nó giống như trình quản lý gói
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"4 trên Ubuntu.
1 | xcode-select --install |
Cài đặt Homebrew
Homebrew là một trình quản lý gói cho macOS. Nó giống như trình quản lý gói /bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"4 trên Ubuntu. | /bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]" |
Kiểm tra lại xem đã cài đặt thành công Homebrew hay chưa bằng lệnh sau:
1
2
2
$ brew --versionPHP 7.2, 7.3 và 7.4
Homebrew 3.3.10
Ngoài ra bạn có thể chạy lệnh
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"5 để xem mọi thứ đã ổn hay chưa.PHP 5.6, 7.0 & 7.1 thì chúng ta cần phải chạy lệnh sau:
1 | xcode-select --install |
Cài đặt Homebrew
Homebrew là một trình quản lý gói cho macOS. Nó giống như trình quản lý gói
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"4 trên Ubuntu.
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"
Kiểm tra lại xem đã cài đặt thành công Homebrew hay chưa bằng lệnh sau:
1
2
$ brew --version
Homebrew 3.3.10
Ngoài ra bạn có thể chạy lệnh /bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"
5 để xem mọi thứ đã ổn hay chưa.
Cài đặt đa phiên bản PHP
Thời điểm hiện tại, Homebrew chỉ duy trì và hỗ trợ các phiên bản PHP 7.2, 7.3 và 7.4
Do đó, để cài đặt được các phiên bản PHP cũ hơn PHP 5.6, 7.0 & 7.1 thì chúng ta cần phải chạy lệnh sau:
1 | xcode-select --install |
Cài đặt Homebrew
1 | xcode-select --install |
Cài đặt Homebrew
Trong macOS phiên bản mới [như 10.11, 10.12, 10.13 ...] có cài sẵn mặc định Webserver Apache HTTP và PHP, tuy nhiên để dễ tuỳ biến trong phần này sẽ huỷ sử dụng cài đặt mặc định đó để sử dụng phiên bản
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"8,
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"9,
10 tuỳ chọn.
2
Do sử dụng
11 để cài đặt, nên đảm bảo cài đặt công cụ này trước: Sử dụng Homebrew [brew]
2
Các file cấu hình cho Apache, PHP, MySQL sử dụng
12 để soạn thảo, nên cũng cần cài VS Code trước: Cài đặt Visual Studio Code
2
Đầu tiên cần đảm báo có Command Line Tools
$ php -v4
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Có một số thư viện có thể cần bổ sung, chạy lệnh sau để cài đặt:
$ php -v5
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Trước tiên cần huỷ đi việc sử dụng Apache cài đặt mặc định nếu đang kích hoạt:
$ php -v6
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Tiến hành cài đặt Apache bằng lệnh:
$ php -v7
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Cấu hình để Apache tự động chạy khi khởi động hệ thống:
$ php -v8
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Mặc định Webserver Apache HTTP cài theo cách trên nó làm việc trên cổng
13, nên có thể truy cập địa chỉ
2
14, kết quả như sau chứng tỏ Apache đã cài thành công
2
Khi làm việc với Apache một số lệnh có thể dùng tới như:
$ php -v9
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Thông tin cấu hình chỉnh của Apache lưu trong file
15, để soạn thảo - thay đổi cấu hình gõ lệnh
2
10
Thay đổi một số cấu hình Apache
Đổi cổng HTTPD Thay đổi cổng 1
3 thành cổng
21
7, tìm đến: Thay đổi cổng
2
13 thành cổng
2
17, tìm đến:
2
11
Thay bằng:
12
Đổi ServerName tìm đến: tìm đến:
13
Thay bằng:
14
Đổi ServerName tìm đến:, ví dụ muốn đổi vai trò chạy là của user
18 tìm đến:
2
15
Thay bằng:
16
Đổi ServerName tìm đến:, để hỗ trợ viết lại URL và
19:
2
17
Thay bằng:
18
Đổi ServerName tìm đến: ví dụ webiste lưu tại
$ brew --version0, và cấu hình để chạy trên domain ảo
Homebrew 3.3.10
$ brew --version1
Homebrew 3.3.10
19
Thay đổi user chạy , ví dụ muốn đổi vai trò chạy là của user
18 tìm đến:
2
xcode-select --install0
Bật mod_rewrite, để hỗ trợ viết lại URL và
19:
2
xcode-select --install1
Tạo thử một VirtualHost: ví dụ webiste lưu tại
$ brew --version0, và cấu hình để chạy trên domain ảo
Homebrew 3.3.10
$ brew --version1sudo apachectl restart, tạo ra một file
Homebrew 3.3.10
$ brew --version3 có nội dung
Homebrew 3.3.10
$ brew --version4 trong thư mục web, chạy kiểm tra
Homebrew 3.3.10
$ brew --version5
Homebrew 3.3.10
Tiếp theo thay đổi $ brew --version
Homebrew 3.3.10
2 bằng cách gõ:
Homebrew 3.3.10
Thêm vào:
xcode-select --install2
Để cài đặt phiên bản PHP nào thì gõ lệnh cài đặt
12 với tham số bản PHP như
13,
13,
15 ..., ví dụ:
xcode-select --install3
File cấu hình cho từng phiên bản PHP nằm trong các thư mục con trong
16 như:
xcode-select --install4
Cấu hình Apache để làm việc với PHP, ví dụ cấu hình để Apache gọi đến phiên bản PHP7.2 đã cài đặt. để làm việc với PHP, ví dụ cấu hình để Apache gọi đến phiên bản PHP7.2 đã cài đặt.
Mở file
15 và thêm vào
2
xcode-select --install5
Cũng cần đảm bảo trong
18 có định nghĩa Handler, để Apache biết gọi đến PHP với các file có phần mở rộng
19
xcode-select --install6
Khởi động lại Apache, sau đó tạo một file
brew tap exolnet/homebrew-deprecated0 trong thư mục website, với nội dung:
xcode-select --install7
Kiểm tra thử
$ brew --version5
Homebrew 3.3.10
Chuyển đổi nhanh phiên bản PHP với SPHP
Cài đặt
brew tap exolnet/homebrew-deprecated2
xcode-select --install8
Nếu có cài nhiều phiên bản PHP và muốn chuyển nhanh sang một phiên bản thì gõ lệnh
xcode-select --install9
Cài đặt extension memcached, xdebug cho PHP, cơ bản sử dụng pecl để cài đặt [kể cả các extension khác nếu cần], cơ bản sử dụng pecl để cài đặt [kể cả các extension khác nếu cần]
10
Sử dụng PHP-FPM
Mỗi phiên bản cài đặt trên, đồng thời nó cũng có PHP-FPM được cài đặt. File cấu hình trong thư mục tương ứng với bản PHP, ví dụ PHP 8.0 thì file cầu hình tại
brew tap exolnet/homebrew-deprecated3
Với PHP-FPM thì máy chủ Web [như Apache, Nginx] sẽ chạy code PHP thông qua proxy, được phục vụ bởi dịch vụ PHP-FPM đang lắng nghe trên cổng nào đó [mặc định là 9000].
Để rõ hơn cho trường hợp sử dụng này hãy tham khảo Apache Handler và Nginx - VHost
Nếu bạn muốn dùng PHP-FPM để chạy code PHP, để tiện hãy mở file cấu hình
brew tap exolnet/homebrew-deprecated4 sửa dòng
listen = 127.0.0.1:9000Thànhlisten = 0.0.0.0:9000
Thành
listen = 0.0.0.0:9000
Sau đó dùng lệnh
brew tap exolnet/homebrew-deprecated5 quản lý dịch vụ PHP cho phù hợp [về lệnh này xem thêm Sử dụng lệnh brew]
Khi bạn cập nhật cấu hình, để khởi động lại dịch vụ bạn dùng lệnh [ví dụ cho bản php 7.2]
11
Nếu dịch vụ đang bị dừng dùng lệnh sau để chạy
12
Để dừng dịch vụ
13
Khi bạn chuyển phiên bản PHP, bạn cần dừng dịch vụ, sau khi chuyển phiên bản bạn dùng brew services start chạy bản mới.
Nếu dịch vụ đang chạy, dùng lệnh sau kiểm tra xem đã có dịch vụ PHP đang chạy và cổng lắng nghe
14
Cài đặt MySQL
Cài đặt bằng brew
15
Thiết lập MySQL chạy cùng hệ thống
16
17
Mặc định user có quyền cao nhất là
brew tap exolnet/homebrew-deprecated6 với password là rỗng
brew tap exolnet/homebrew-deprecated7, nếu muốn thiết lập password mới cho
brew tap exolnet/homebrew-deprecated6 chạy lệnh:
18
File config my.cn tìm bằng lệnh brew tap exolnet/homebrew-deprecated
9 nó nằm ở: $ php -v
00 tìm bằng lệnh
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
brew tap exolnet/homebrew-deprecated9 nó nằm ở:
$ php -v00
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Công cụ quản trị MySQL
Có nhiều công cụ để quản trị MySQL, thậm chí có thể sử ngay ứng dụng nền web như
$ php -v01, ở đây gợi hai công cụ chạy trên macOS đó là
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
$ php -v02 và
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
$ php -v03
PHP 8.1.1 [cli] [built: Dec 15 2021 09:38:20] [NTS]
Copyright [c] The PHP Group
Zend Engine v4.1.1, Copyright [c] Zend Technologies
with Zend OPcache v8.1.1, Copyright [c], by Zend Technologies
$ php74 -v
PHP 7.4.27 [cli] [built: Dec 17 2021 00:11:47] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.27, Copyright [c], by Zend Technologies
Cài đặt WorkbenchWorkbench
19
Cài đặt WorkbenchWorkbench
/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"0