Cài đặt và sử dụng nhiều phiên bản PHP trên Mac OS X 10.10 Yosemite

Thực sự thì việc phát triển web trên môi trường Mac OS X khá là tuyệt vời. Việc setup môi trường để phát triển PHP có khá nhiều lựa chọn, trong đó có thể kể đến 1 phần mềm khá là thông dụng - MAMP Pro. MAMP Pro cung cấp một giao diện thân thiện cho việc quản lý Apache, PHPMySQL. Tuy nhiên, việc tuỳ biến sẽ trở lên khó khăn hơn do MAMP Pro sử dụng những configuration template riêng. Và đôi khi, MAMP Pro còn bị chậm mà không rõ nguyên nhân !!!

Đó là lý do mà chúng ta sẽ thực hiện theo cách khác, cài đặt và thiết lập mọi thứ qua terminal. Thực sự thì việc sử dụng mọi thứ qua terminal khá là thú vị. Nó có thể hơi khó 1 chút đối với người mới (do type nhiều) nhưng khi đã làm quen rồi thì rất thích thú (vẫn là do được type nhiều)

Apache

OSX 10.10 Yosemite được cài đặt sẵn Apache 2.4. Để khởi động web server, các bạn chỉ việc mở Terminal (/Applications/Utilities/Terminal) và gõ:

 sudo apachectl start

Quá dễ đoán đối với việc stop và restart đúng không?

sudo apachectl stop
sudo apachectl restart

OK rồi, hãy start apache ngay đi và mở trình duyệt lên và gõ thử localhost xem có hiện ra It works! hay không nào.

Chú ý: Nếu bạn không thể truy cập được http://localhost thì bạn sẽ cần thêm alias vào file /etc/hosts: 127.0.0.1 localhost. Mặc định thì nó đã có sẵn.

Document Root

Điều đầu tiên chúng ta muốn làm sẽ là thay đổi Document Root cho Apache. Đây là folder mà Apache sẽ tìm kiếm file để phục vụ. Mặc định thì Document Root được thiết lập ở /Library/WebServer/Documents. Thiết lập này thường được dùng cho các máy có nhu cầu làm máy chủ (web server). Chúng ta sẽ thay đổi nó về thư mục home - thư mục user của bạn. Để thực hiện điều này, chúng ta cần thay đổi file /etc/apache2/httpd.conf. Do đây là file được sở hữu bởi root nên bạn sẽ cần thêm sudo để có thể thay đổi được file. Ở đây mình dùng vim, bạn có thể dùng các editor khác như sublime text hay nano nếu thích.

sudo vi /etc/apache2/httpd.conf

sudo vi /etc/apache2/httpd.conf

Tìm từ DocumentRoot, bạn sẽ thấy dòng sau:

DocumentRoot "/Library/WebServer/Documents"

Thay đổi đường dẫn thành folder dưới user của bạn. Ở đây tôi dùng thư mục Sites

DocumentRoot "/Users/your_user/Sites"

Bạn cũng cần thay đổi đường dẫn ở trong thẻ <Directory>

<Directory "/Users/your_user/Sites">

Ở ngay trong block của <Directory> bạn sẽ thấy AllowOverride, hãy thay đổi nó thành như sau:

AllowOverride All

Document Root

User & Group

Bây giờ Apache đã được thiết lập để trỏ tới thư mục Sites trong thư mục home của bạn. Tuy nhiên chúng ta vẫn có một vấn đề, đó là mặc định apache sẽ chạy dưới user _www và group _www. Điều này sẽ dẫn tới các vấn đề liên quan tới permisssion khi truy cập các file trong thư mục home. Chúng ta sẽ cần thay đổi chúng thành user mà bạn đang dùng và group staff. Vẫn ở trong file httpd.conf, bạn tìm 2 thiết lập UserGroup và thay đổi chúng:

User your_user
Group staff

Đến đây chúng ta có thể save lại file httpd.conf. Nếu bạn vẫn dùng vim thì type :wq và enter

Tạo thư mục Sites

Sau khi chỉnh sửa file httpd.conf thì tất nhiên bạn sẽ cần restart lại apache để cập nhật các thiết lập mới:

sudo apachectl restart

Bây giờ bạn cần tạo thư mục Sites ở trong thư mục home (your_user) của bạn. Ở trong thư mục Sites, chúng ta sẽ tạo thêm 1 file index.html với nội dung đơn giản: <h1>Day la thu muc goc cua web server</h1>. Bạn có thể làm việc này bằng Terminal hay Finder tuỳ bạn, ở đây tôi dùng terminal luôn:

mkdir ~/Sites
echo "<h1>Day la thu muc goc cua web server</h1>" > ~/Sites/index.html

Bây giờ hãy mở http://localhost bằng trình duyệt để kiểm tra xem nội dung chúng ta vừa viết có hiện ra không nhé. Nếu và nó nên hiện ra nội dung như thế, chúng ta có thể đến bước tiếp theo

Homebrew

Việc cài đặt và cả quá trình sử dụng của chúng ta sẽ phụ thuộc rất nhiều vào một package manager trên OS X được gọi là Homebrew. Để cài đặt được Homebrew thì Xcode 6.1 (hoặc hơn) và Command Line Tools là yêu cầu bắt buộc. Hãy chắc chắn rằng bạn cài đặt Xcode trước. Sau khi cài đặt thành công, mở Xcode, đồng ý với Terms and Conditions, sau đó cài đặt Command Line Tools bằng câu lệnh sau:

xcode-select --install

Installation

Cài đặt Homebrew bằng câu lệnh sau:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Hãy nhập password khi được yêu cầu. Quá trình này có thể sẽ mất vài phút. Sau khi hoàn thành, bạn có thẻ kiểm tra việc cài đặt brew có thực sự hoàn tất hay không bằng câu lệnh:

brew --version

Verificaton

Để chắc chắn rằng mọi thứ ổn và được update mới nhất, hãy chạy 2 lệnh sau:

brew doctor
brew update

Install PHP 5.4, 5.5, 5.6

Việc cài đặt các phiên bản PHP khi đã có brew khá là đơn giản. Hãy chạy các câu lệnh sau để cài đặt PHP 5.4, 5.5 và 5.6

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew install php54
brew install php55
brew install php56

Quá trình này sẽ mất thời gian một chút. Sau khi hoàn thành, nếu bạn muốn thay đổi một số thiét lập cho mỗi bản php thì có thể tìm file php.ini của mỗi version trong các đường dẫn sau:

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

Thiết lập Apache

Bạn đã cài đặt nhièu phiên bản php, nhưng chúng ta cần phải thiết lập Apache để sử dụng chúng. Để làm được điều này, chúng ta sẽ lại phải thay đổi file /etc/apache2/httpd.conf. Hãy tìm #LoadModule php5_module và thêm vào bên dưới:

# Brew PHP LoadModule
LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

Ở đây chúng ta thiết lập để apache sử dụng php 5.4. Chúng ta sẽ thêm việc chuyển đổi phiên bản php sau. Bạn cũng nên bỏ comment module mod_rewrite.so

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Lưu lại thay đổi và restart Apache:

sudo apachectl restart

Validating PHP Installation

Cách tốt nhất để kiểm tra php version cũng như các module mà apache đang sử dụng là tạo 1 file info.php ở thư mục Sites sử dụng hàm phpinfo():

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

Mở địa chỉ http://localhost/info.php trên trình duyệt để thấy các thông tin về phiên bản php đang dùng. phpinfo

PHP Switcher Script

Ở phần trên chúng ta đã hard-coded Apache để sử dụng PHP 5.4. Nhưng mục đích của chúng ta là có thể chuyển đổi các phiên bản PHP. Bây giờ chúng ta sẽ thực hiện việc đó qua PHP switcher script

Sẽ hữu ích hơn nếu bạn thiết lập 1 thư mục bin ở trong thư mục home và setup srcipt trong đó:

mkdir -p ~/bin/
curl -L https://raw.githubusercontent.com/conradkleinespel/sphp-osx/master/sphp > ~/bin/sphp
chmod +x ~/bin/sphp

Cập nhật PATH

Để thuận tiện hơn cho việc tìm thấy script khi đang sử dụng terminal, chúng ta sẽ cần cập nhật PATH bằng cách thêm /Users/your_user/bin/usr/local/bin, /usr/local/sbin (của Homebrew). Phụ thuộc vào shell bạn dùng mà bạn sẽ cần thêm dòng sau vào file ~/.profile, ~/.bash_profile hoặc ~/.zshrc

export PATH=/usr/local/bin:/usr/local/sbin:$PATH:/Users/your_user/bin

Chú ý: Thay your_user bằng user thực sự.

Hãy tắt tất cả tab và cửa sổ terminal đi và mở lại để cập nhật. Có thể kiểm tra lại PATH bằng lệnh echo $PATH

Thiết lập Apache sử dụng PHP Switcher

Chúng ta sẽ lại phải cập nhật file /etc/apache2/httpd.conf. Tìm Brew PHP bạn đã thêm vào trước đó. Thay dòng LoadModule thành:

# Brew PHP LoadModule
LoadModule php5_module /usr/local/lib/libphp5.so

Để thay đổi phiên bản PHP sử dụng sang 5.5 chúng ta sẽ sử dụng lệnh:

sphp 55

Và restart apache để các thay đổi có hiệu lực

sudo apachectl restart

Như vậy, khi bạn muốn thay đổi phiên bản php để sử dụng, chỉ cần dùng sphp và restart lại apache. Hi vọng bài viết này sẽ giúp cho việc lập trình php trên môi trường OS X của bạn dễ dàng hơn

Nguồn tham khảo: Grav