Hướng dẫn phpstorm mamp - mamp phpstorm

Các môi trường cho phát triển và triển khai ứng dụng được chia làm 3 loại: development, staging và production. Development là môi trường chuyên dành cho phát triển. Production là môi trường triển khai thực tế. Staging là môi trường giả lập gần giống production dành cho thử nghiệm.

Đối với ứng dụng PHP, Apache là một trong những server phổ biến nhất trong môi trường production. Do vậy, việc sử dụng Apache trong development và staging là yêu cầu tự nhiên.

XAMPP là một trong những cách đơn giản nhất để cài đặt và cấu hình Apache (và các server khác). Thực tế XAMPP cũng là bộ server cài đặt và cấu hình sẵn được sử dụng rất phổ biến làm môi trường phát triển ứng dụng PHP.

Ngoài ra còn một số cách tiện lợi nữa như sử dụng web server tích hợp của PHP hoặc của PhpStorm.

Bài học này sẽ giới thiệu cách cài đặt các môi trường này.

Cài đặt và sử dụng XAMPP

Mặc dù PHP có thể tích hợp với nhiều chương trình web server, Apache vẫn là lựa chọn phổ biến nhất hiện nay, đặc biệt là làm môi trường phát triển ứng dụng PHP. Không chỉ vậy, để tạo ra môi trường thực sự cho ứng dụng web, bạn còn cần đến các server khác như MySQL (server cơ sở dữ liệu), Mercury (mail server), Filezilla (FTP server, phục vụ triển khai ứng dụng web).

Để hỗ trợ lập trình viên nhanh chóng cài đặt môi trường cho phát triển ứng dụng, một số hãng thứ ba xây dựng sẵn các gói server mã mở.

XAMPP là bộ server được chúng ta sử dụng trong khóa học này. Bạn tải bộ cài từ đường link https://www.apachefriends.org/download.html và cài đặt như một chương trình windows bình thường. Đơn giản nhất là cài nó vào thư mục trên ổ hệ thống C:\XAMPP.

Trên Windows cũng có một số bộ WAMP thông dụng khác như AMPPS stack (https://ampps.com), WAMP (https://www.wampserver.com). Chúng đều tương tự nhau khi sử dụng cho phát triển ứng dụng.

Để quản lý các server, bạn chạy file XAMPP\xampp-control.exe.

Để chạy ứng dụng PHP bạn cần chạy Apache server (và cả MySQL sau này). Bấm vào nút Start tương ứng của Apache ở cột Actions.

Hướng dẫn phpstorm mamp - mamp phpstorm

Nếu cổng 80 và 443 còn rỗi, server Apache sẽ khởi động. Trong lần hoạt động đầu tiên Apache sẽ hỏi hệ thống để bind với cổng TCP 80 và 443.

Nếu cổng 80 đã bị chiếm bởi một chương trình khác (ví dụ, IIS), Apache sẽ báo lỗi và tắt ngay.

Khi này bạn có thể cấu hình để Apache chiếm dụng một cổng khác, ví dụ, cổng 8080.

Để cấu hình Apache cho cổng 8080, hãy mở file XAMPP\apache\conf\httpd.conf và (1) chỉnh Listen 80 (dòng số 60) thành Listen 8080, và (2) chỉnh ServerName localhost thành ServerName localhost 8080 (dòng 228).

Lưu file cấu hình và khởi động Apache.

Trong bộ XAMPP đã có sẵn chương trình dịch PHP (trong thư mục XAMPP\php). Server Apache trong bộ XAMPP cũng đã được cấu hình để tích hợp với PHP. Bạn không cần làm gì nữa.

Tạo và truy xuất page

Hãy thực hiện một ví dụ nhỏ sau:

(1) mở thư mục XAMPP\htdocs. mở thư mục XAMPP\htdocs.

(2) tạo thư mục con learnphp trong htdocs. tạo thư mục con learnphp trong htdocs.

(3) tạo file index.php trong thư mục learnphp và viết code như sau: tạo file index.php trong thư mục learnphp và viết code như sau:

(4) mở URL http://localhost/learnphp/index.php từ trình duyệt. mở URL http://localhost/learnphp/index.php từ trình duyệt.

Bạn sẽ thu được kết quả như sau:

Hướng dẫn phpstorm mamp - mamp phpstorm

Bạn đã xây dựng được một trang web đơn giản đầu tiên bằng PHP. Trang này hiển thị kết quả của hàm phpinfo() – tất cả thông tin về hệ thống PHP thu thập được.

Thư mục XAMPP\htdocs là một thư mục đặc biệt có tên gọi là document root của chương trình máy chủ web Apache trong bộ XAMPP.document root của chương trình máy chủ web Apache trong bộ XAMPP.

Mặc định, tất cả file nằm trong thư mục htdocs đều có thể truy xuất từ trình duyệt thông qua một URL tương ứng. Như trong ví dụ trên, file XAMPP\htdocs\learnphp\index.php được truy xuất qua URL http://localhost/learnphp/index.php.URL http://localhost/learnphp/index.php.

Cấu trúc URL sẽ được xem xét chi tiết trong bài học về tích hợp PHP trong môi trường web.

Nếu chúng ta bỏ qua phần XAMPP\htdocs (ở cấu trúc thư mục) và phần http://localhost (ở URL) thì sẽ thu được sự tương đương giữa đường dẫn file (\learnphp\index.php) và URL (/learnphp/index.php).

Phần learn trong URL và trong đường dẫn file đều gọi là sub-directory (thư mục con).sub-directory (thư mục con).

File script có phần mở rộng php thì mới được xử lý bằng chương trình dịch PHP. Nếu file có phần mở rộng khác thì dù có chữa mã PHP cũng sẽ không được xử lý bằng cơ chế PHP.phần mở rộng php thì mới được xử lý bằng chương trình dịch PHP. Nếu file có phần mở rộng khác thì dù có chữa mã PHP cũng sẽ không được xử lý bằng cơ chế PHP.

Nói tóm lại, khi bạn nhập URL vào thanh địa chỉ trình duyệt, bạn đang yêu cầu tải một file tương ứng từ thư mục htdocs.

Cần lưu ý rằng, ở đây chúng ta đang cài đặt môi trường phát triển nên máy chủ và trình duyệt chạy trên cùng một máy vật lý.

Trong môi trường triển khai thực, trình duyệt và Apache chạy trên hai máy chủ vật lý khác nhau. Do vậy, yêu cầu tải file của bạn sẽ được trình duyệt gửi qua mạng tới chương trình máy chủ Apache. Tương tự như vậy, file kết quả sẽ được Apache gửi qua mạng trở lại cho trình duyệt.

Quá trình trao đổi dữ liệu giữa trình duyệt và chương trình máy chủ Apache diễn ra tự động theo giao thức HTTP. Chúng ta sẽ học kỹ hơn về giao thức HTTP khi xem xét cách xử lý truy vấn (GET và POST).

Xử lý yêu cầu truy xuất file

Khi nhận được yêu cầu tải một file từ trình duyệt, chương trình máy chủ Apache sẽ tìm file có tên và đường dẫn tương ứng trong htdocs.

Nếu không tìm thấy file theo yêu cầu, Apache sẽ gửi lại cho trình duyệt thông báo lỗi 404 Object not found.

Lỗi 404 là lỗi bạn rất hay gặp khi truy cập website trên Internet. Lỗi này có nghĩa là ‘Tài nguyên tương ứng với URL (mà bạn cung cấp cho trình duyệt) không tồn tại’, hoặc đơn giản là ‘địa chỉ sai’.

Nếu tìm thấy file theo yêu cầu sẽ phát sinh hai trường hợp.

(1) Nếu đó là một file thuộc về một trong kiểu HTML, CSS, Javascript, tài nguyên (ảnh, tài liệu, v.v.), Apache sẽ gửi file đó cho trình duyệt.HTML, CSS, Javascript, tài nguyên (ảnh, tài liệu, v.v.), Apache sẽ gửi file đó cho trình duyệt.

(2) Nếu file có phần mở rộng php, Apache sẽ tự động gọi chương trình dịch PHP (php.dll).php, Apache sẽ tự động gọi chương trình dịch PHP (php.dll).

Thư viện php.dll hoạt động trong tiến trình (process) của Apache thực hiện dịch và thực thi mã PHP trong file. Kết quả (văn bản HTML) từ quá trình dịch này được Apache trả về cho trình duyệt.

Hướng dẫn phpstorm mamp - mamp phpstorm

Điều này rất giống với khi bạn sử dụng PHP CLI: bạn tự mình gọi chương trình php.exe và chuyển file php để PHP xử lý. Kết quả xử lý của script CLI xuất ra console. Còn kết quả xử lý của php.dll (trong process Apache) sẽ trả lại cho Apache.

Như vậy, khi bạn gửi yêu cầu truy xuất một file php, cái bạn nhận luôn luôn là kết quả xử lý của mã PHP trong file đó. Bạn không thể nhận được file mã nguồn PHP.

Một lưu ý là chỉ những kết quả xử lý ở dạng văn bản (chủ yếu là HTML) mới được gửi lại client. Các thông tin khác của quá trình xử lý (như các object và biến) chỉ tồn tại trong bộ nhớ của server và bị hủy bỏ khi quá trình xử lý file php kết thúc.văn bản (chủ yếu là HTML) mới được gửi lại client. Các thông tin khác của quá trình xử lý (như các object và biến) chỉ tồn tại trong bộ nhớ của server và bị hủy bỏ khi quá trình xử lý file php kết thúc.

Một đặc điểm quan trọng trong quá trình truy xuất và xử lý file là tính vô trạng thái (stateless). Điều này liên quan đến đặc điểm của giao thức HTTP (Hyper Text Transfer Protocol) – giao thức truyền thông giữa trình duyệt và chương trình máy chủ web.stateless). Điều này liên quan đến đặc điểm của giao thức HTTP (Hyper Text Transfer Protocol) – giao thức truyền thông giữa trình duyệt và chương trình máy chủ web.

Tính vô trạng thái thể hiện rằng các truy vấn thực hiện từ cùng một trình duyệt là độc lập nhau. Hiểu đơn giản là, bạn yêu cầu truy xuất file index.php 3 lần thì 3 lần thực hiện đó không có gì liên quan đến nhau. Apache không lưu trữ thông tin gì về lần truy xuất trước đó.

Tính vô trạng thái tạo ra rất nhiều khó khăn khi xây dựng các ứng dụng, ví dụ, khi cần lưu trữ thông tin về hàng đã mua trong giỏ hàng.

Sử dụng PhpStorm với Apache

Để có môi trường tiện lợi nhất khi làm việc với Apache từ PhpStorm, chúng ta cần thực hiện một số bước cài đặt trên project.

Khi sử dụng PhpStorm với Apache trên máy cục bộ có hai cách:

  1. Tạo project PhpStorm từ một thư mục con của htdocs. Ở cách làm việc này bạn phát triển ứng dụng trực tiếp trên server. Cách cấu hình PhpStorm với loại project này được gọi là in-place server configuration. Đây là cách thức đơn giản nhất.in-place server configuration. Đây là cách thức đơn giản nhất.
  2. Tạo project PhpStorm ở một thư mục khác và triển khai lên một thư mục con của htdocs. Cách cấu hình này có tên gọi là local server configuration.local server configuration.

Ngoài ra, PhpStorm còn hỗ trợ một loại cấu hình nữa gọi là remote server configuration. Cấu hình này cho phép làm việc với server nằm trên một máy tính khác thông qua FTP, SFTP, hoặc FTPS. Chúng ta sẽ không xem xét cách cấu hình này.remote server configuration. Cấu hình này cho phép làm việc với server nằm trên một máy tính khác thông qua FTP, SFTP, hoặc FTPS. Chúng ta sẽ không xem xét cách cấu hình này.

In-place server configuration

Khi tạo project theo cách này thực tế là bạn thực hiện theo các bước sau:

(1) Tạo/chọn thư mục dự án là một thư mục con của htdocs.thư mục dự án là một thư mục con của htdocs.

Hướng dẫn phpstorm mamp - mamp phpstorm

(2) Tiếp theo bạn cần cấu hình CLI Interpreter là bộ PHP của XAMPP: Chọn File > Settings > Languages & Frameworks > PHP và thực hiện theo thứ tự sau để thiết lập Interpreter từ bộ XAMPP\php.Tiếp theo bạn cần cấu hình CLI Interpreter là bộ PHP của XAMPP: Chọn File > Settings > Languages & Frameworks > PHP và thực hiện theo thứ tự sau để thiết lập Interpreter từ bộ XAMPP\php.

Hướng dẫn phpstorm mamp - mamp phpstorm

(3) Thiết lập triển khai project: Chọn File > Settings > Build, Execution, DeploymentThiết lập triển khai project: Chọn File > Settings > Build, Execution, Deployment

Hướng dẫn phpstorm mamp - mamp phpstorm

Từ giờ bạn có thể mở trình duyệt trực tiếp từ PhpStorm:

Hướng dẫn phpstorm mamp - mamp phpstorm

Local server configuration

(1) Hãy tạo một project mới trong PhpStorm, giả sử trong thư mục PhpstormProjects\LearnPhpWebtạo một project mới trong PhpStorm, giả sử trong thư mục PhpstormProjects\LearnPhpWeb

Hướng dẫn phpstorm mamp - mamp phpstorm

(2) Cài đặt CLI InterpreterCài đặt CLI Interpreter

Chọn File > Settings > Languages & Frameworks > PHP và thực hiện theo thứ tự sau để thiết lập Interpreter từ bộ XAMPP\php.

Hướng dẫn phpstorm mamp - mamp phpstorm

(3) Thiết lập triển khai projectThiết lập triển khai project

Chọn File > Settings > Build, Execution, Deployment

Tab Connection

Hướng dẫn phpstorm mamp - mamp phpstorm

Chú ý ô (3) chỉ định thư mục con trong document root của XAMPP. Đây là thư mục nơi triển khai project.

Ô (4) cần chỉ định sub-directory tương ứng thư mục ở với ô (3). Nếu sử dụng cộng khác 80 thì cần cung cấp thêm cả giá trị cổng sau localhost.

Lưu ý, sau khi hoàn thành cấu hình cần bấm nút dấu tích (5) để cấu hình này trở thành mặc định.

Tab Mappings

Hướng dẫn phpstorm mamp - mamp phpstorm

Nếu Deployment path (2) trùng với Folder (số 3 – tab Connection) thì chỉ cần để dấu \. Các thông tin khác PhpStorm đã tự động điền.

(4) Thiết lập tự động đồng bộ project với serverThiết lập tự động đồng bộ project với server

File > Settings > Build, Execution, Deployment > Options:

Hướng dẫn phpstorm mamp - mamp phpstorm

Ấn OK để chấp nhận thay đổi.

Từ giờ trở đi, cấu trúc file của dự án sẽ tự động đồng bộ với thư mục htdocs\learnphp.

Nếu cơ chế đồng bộ tự động chưa chạy, bạn có thể kích hoạt bằng cách click phải vào tên dự án > Deployment > Upload to ….

Nếu bạn mở trang php trong trình duyệt

Hướng dẫn phpstorm mamp - mamp phpstorm

PhpStorm sẽ mở từ server Apache của XAMPP:

Hướng dẫn phpstorm mamp - mamp phpstorm

Cách cấu hình như trên cho phép bạn tách rời thư mục dự án với thư mục triển khai nhưng đảm bảo rằng hai thư mục luôn đồng bộ.

Cách cấu hình này rất tiện lợi nếu bạn cần làm project dài. Tuy nhiên, trong quá trình học bạn có thể phải liên tục tạo project mới. Việc cấu hình lại như trên mỗi khi tạo project mới có thể sẽ rất mất thời gian.

Trong trường hợp cần thử nghiệm cho các page đơn giản, bạn có thể sử dụng các web server khác như dưới đây.

Sử dụng các web server khác

XAMPP mặc dù đơn giản trong cài đặt và sử dụng nhưng trong nhiều trường hợp bạn không muốn cài đặt cả bộ server. Có những giải pháp khác đơn giản hơn để thử nghiệm PHP trong môi trường web.

Sử dụng web server tích hợp trong bộ PHP

Bộ chương trình PHP bạn tải về đều có sẵn một web server tích hợp. Bạn chỉ cần sử dụng PHP CLI như sau:

(1) Tạo một thư mục bất kỳ làm document root. Giả sử bạn tạo thư mục C:\learnphp.document root. Giả sử bạn tạo thư mục C:\learnphp.

Đây là thư mục sẽ chứa các script php cần truy xuất qua trình duyệt. Thư mục này sẽ đóng vai trò như htdocs của XAMPP.

(2) Mở Command Prompt và chuyển C:\learnphp thành thư mục hiện hành (lệnh cd C:\learnphp).thư mục hiện hành (lệnh cd C:\learnphp).

(3) Chạy lệnh php.exe -S localhost:8000

Hướng dẫn phpstorm mamp - mamp phpstorm

Giờ bạn có thể tạo các file script php trong thư mục learnphp và truy xuất qua trình duyệt.

Lưu ý cổng trong lệnh trên là 8000 nên bạn phải truy cập server từ URL localhost:8000. Bạn có thể thay giá trị cổng khác tùy ý.

Nếu dùng cổng 80 (với điều kiện cổng này còn rỗi) thì chỉ cần dùng URL localhost. Trình duyệt sẽ tự đặt cổng 80 nếu bạn bỏ trống.

Điểm rất hay của server này là bạn có thể theo dõi cả truy vấn trình duyệt gửi tới server và quá trình xử lý kết nối ở server. Điều này rất có ích trong quá trình học.

Hướng dẫn phpstorm mamp - mamp phpstorm

Một sự tiện lợi khác của server này là bất kỳ một thư mục nào cũng có thể trở thành document root tạm thời. Do vậy, site của bạn luôn được truy xuất với root path / (http://localhost/). Bạn không cần tạo sub-directory cho mỗi site như khi sử dụng Apache.

Sử dụng server tích hợp của PhpStorm

Như đã trình bày từ những bài học đầu tiên, PhpStorm là IDE chính chúng ta sử dụng trong tập hướng dẫn này.

PhpStorm cũng có sẵn một web server tích hợp mà bạn có thể sử dụng ngay lập tức.

Hướng dẫn phpstorm mamp - mamp phpstorm

Chỉ cần click vào biểu tượng của một trong các trình duyệt, file php hiện hành sẽ được mở bằng trình duyệt.

Hướng dẫn phpstorm mamp - mamp phpstorm

Chú ý, để làm việc với PHP bạn cần cài đặt chương trình dịch PHP trong PhpStorm.

Hãy để ý URL có phần hơi kỳ lạ:

  • Giá trị cổng được chọn ngẫu nhiên và thường nằm ở cuối dải giá trị.
  • Phàn đường dẫn của URL thể hiện đúng cấu trúc file/the mục của dự án. PhpStorm chọn thư mục dự án là document root.
  • Có một chuỗi truy vấn (query string) đặc biệt đi sau tên file.

Sử dụng kết hợp PhpStorm project với PHP built-in server

Một cách kết hợp khá hay là sử dụng PHP built-in server từ terminal của PhpStorm. Bạn có thể thử nghiệm ngay qua ví dụ du sau đây.

(1) Tạo một project mới từ PhpStorm

(2) Mở terminal của PhpStorm và gõ lệnh khởi động built-in server: php -S localhost:80

(3) Tạo file index.php trong project

(4) Mở trang index từ trình duyệt http://localhost/

Với cách này, thư mục của project đồng thời trở thành document root của server. Bạn có thể thu nhỏ cửa sổ terminal lại để tiếp tục làm việc. Khi thu nhỏ cửa sổ sẽ không đóng tiến trình của terminal nên web server của PHP vẫn hoạt động.

Kết luận

Trong bài học này chúng ta đã học cách cài đặt và sử dụng bộ server XAMPP cho lập trình web PHP.

  • XAMPP là bộ server tích hợp với các thành phần đã cài đặt và cấu hình sẵn, bao gồm PHP, Apache, MySQL và một số server khác.
  • XAMPP sử dụng thư mục htdocs làm document root – thư mục chứa các file truy xuất được qua trình duyệt.
  • Truy xuất các file php trong htdocs qua trình duyệt sẽ kích hoạt quá trình xử lý của PHP trên server, kết quả xử lý trả về cho trình duyệt hiển thị.

+ Nếu bạn thấy site hữu ích, trước khi rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.+ Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.+ Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.Cảm ơn bạn!giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.
+ Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.
+ Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.
Cảm ơn bạn!