Homebrew giúp tách môi trường lập trình khỏi các thành phần hệ thống đi kèm macOS và làm cho việc nâng cấp, gỡ bỏ dễ kiểm soát hơn. Bài viết này dựng một bộ PHP, MySQL và Apache phục vụ phát triển local, áp dụng được cho cả máy Apple Silicon và Intel.
Chuẩn bị Homebrew và Command Line Tools
xcode-select --install
brew --version
brew update
Nếu chưa có Homebrew, cài theo lệnh chính thức tại brew.sh. Không hardcode đường dẫn /opt/homebrew hoặc /usr/local; dùng brew --prefix để cấu hình hoạt động trên cả hai kiến trúc.
Cài PHP, MySQL và Apache
brew install php mysql httpd
php -v
mysql --version
$(brew --prefix httpd)/bin/httpd -v
Homebrew cài Apache dưới tên formula httpd. Cấu hình mặc định dùng cổng 8080 để không cần quyền quản trị. Document root mặc định nằm tại $(brew --prefix)/var/www.
Khởi động dịch vụ
brew services start php
brew services start mysql
brew services start httpd
brew services list
Mở http://localhost:8080 để kiểm tra Apache. Nếu chỉ muốn chạy trong phiên terminal hiện tại, có thể dùng lệnh trực tiếp thay cho brew services.
Khởi tạo và bảo vệ MySQL local
mysql_secure_installation
mysql -u root -p
Trong dự án thật, nên tạo database và tài khoản riêng thay vì để ứng dụng dùng root:
CREATE DATABASE demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'demo'@'localhost' IDENTIFIED BY 'local_password';
GRANT ALL PRIVILEGES ON demo.* TO 'demo'@'localhost';
FLUSH PRIVILEGES;
Kết nối PHP với Apache
Mở file $(brew --prefix)/etc/httpd/httpd.conf. Đường dẫn module PHP thay đổi theo phiên bản và kiến trúc, vì vậy hãy tìm chính xác bằng:
brew --prefix php
find "$(brew --prefix php)" -name 'libphp.so'
Nếu formula PHP hiện tại cung cấp module Apache, thêm dòng LoadModule theo đường dẫn vừa tìm được, rồi cấu hình xử lý tệp PHP:
<IfModule php_module>
DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
</IfModule>
Một số phiên bản Homebrew có thể ưu tiên PHP-FPM thay vì libphp. Khi không tìm thấy module, dùng PHP-FPM và cấu hình proxy_fcgi; không lấy đường dẫn từ một bài cũ rồi dán nguyên vào máy.
Tạo Virtual Host cho dự án
<VirtualHost *:8080>
ServerName demo.test
DocumentRoot "/Users/yourname/Sites/demo/public"
<Directory "/Users/yourname/Sites/demo/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Bật file virtual hosts trong httpd.conf, sau đó thêm 127.0.0.1 demo.test vào /etc/hosts. Kiểm tra cấu hình trước khi restart:
$(brew --prefix httpd)/bin/httpd -t
brew services restart httpd
Kiểm tra PHP và extension MySQL
php -m | grep -E 'mysqli|pdo_mysql'
php --ini
echo '<?php phpinfo();' > "$(brew --prefix)/var/www/info.php"
Truy cập trang kiểm tra rồi xóa info.php ngay sau đó vì trang này tiết lộ nhiều thông tin cấu hình.
Lỗi thường gặp
- Cổng 8080 bị chiếm: dùng
lsof -nP -iTCP:8080 -sTCP:LISTENhoặc đổiListen. - Apache tải tệp PHP thay vì chạy: kiểm tra module/FPM,
AddTypevà log Apache. - Lệnh PHP trỏ sai bản: kiểm tra
which php, PATH và chạybrew link --overwrite phpkhi thật sự cần. - MySQL không khởi động: xem
brew services listvà log trong thư mục data của formula.
Checklist hoàn tất
- Apache trả về trang local trên đúng cổng.
php -vvà trang web dùng cùng phiên bản PHP.- Ứng dụng kết nối bằng tài khoản MySQL riêng.
- Virtual Host trỏ đúng thư mục public.
- Không đưa mật khẩu thật hoặc
phpinfo()vào repository.




Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.