(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Môi trường lập trình PHP kết nối trực tiếp với server

PHP (Hypertext Preprocessor) là một ngôn ngữ lập trình chủ yếu phía server.

php

Hệ điều hành Omarine sử dụng Apache server, do đó có thể cài đặt PHP nối với web server qua giao diện module trực tiếp (SAPI). Gói php-7.0.13-x86_64-1.txz đã được xây dựng từ phiên bản hiện hành của PHP và đã được cấu hình để sẵn sàng sử dụng.

Thư mục gốc của server (DocumentRoot)

Thư mục gốc của server được ấn định tại /srv/httpd/htdocs, như vậy bạn sẽ đặt các tài liệu web trong thư mục đó. Tuy nhiên, để thuận tiện chạy thử nghiệm các chương trình PHP với localhost, bạn có thể đặt các tệp php trong thư mục con public_html của thư mục nhà của bạn (~/public_html). Với điều này, bạn có thể sửa đổi trực tiếp rồi chạy các tệp php qua trình duyệt web mà không cần có phép sửa đổi tệp của root.

Chạy và dừng server

Web server sẽ tự động chạy khi khởi động máy tính. Trong trường hợp muốn chạy và dừng server, bạn chạy kịch bản rc.httpd như sau:

Chạy server

sudo /etc/rc.d/rc.httpd start

Dừng server

sudo /etc/rc.d/rc.httpd stop

MySQL

Gói cơ sở dữ liệu server mysql-5.7.16-x86_64-1.txz được xây dựng từ nguồn của trang mysql.com. Server của gói đã được cấu hình thư mục dữ liệu tại /srv/mysql/data, cổng là 3306socket phù hợp với cài đặt của PHP. Vì vậy, khi cần kết nối PHP với cơ sở dữ liệu của MySQL bạn không cần đưa tham số cổng và socket. mysql-5.7.16-x86_64-1.txz cũng đã được cấu hình để bạn có thể nạp dữ liệu từ một tệp văn bản trên máy tính vào một bảng MySQL.

Khi cài đặt gói , quá trình khởi tạo thư mục dữ liệu sẽ tạo một mật khẩu ngẫu nhiên cho người sử dụng root (quản trị) của MySQL với dòng thông báo có dạng sau:

2016-12-02T11:11:31.589788Z 1 [Note] A temporary password is generated for root@localhost: ;7NYe3A#lj!6

Bạn cần ghi lại mật khẩu đó, trong trường hợp này là ;7NYe3A#lj!6

Bước tiếp theo là khởi động MySQL server, bạn chạy kịch bản rc.mysqld như sau:

sudo /etc/rc.d/rc.mysqld start 

Lúc này chúng ta mới chỉ có một người sử dụng (user) duy nhất là root, cũng là user quản trị. Bạn dùng user đó để kết nối với server, tham số yêu cầu kết nối đầy đủ là tên host, tên user và mật khẩu, nhưng vì chúng ta đang ở cùng máy với server nên tham số host có thể được bỏ qua

bash-4.2$ mysql -u root -p
Enter password:

Bạn vào mật khẩu mà cài đặt đã cung cấp, rồi bạn sẽ tới dấu nhắc lệnh SQL.

mysql>

Tại đây bạn có thể đặt lại mật khẩu quản trị, trước khi sử dụng các lệnh chính của MySQL

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'my_password';

Lúc này chúng ta chưa có cơ sở dữ liệu nào ngoài 4 cơ sở dữ liệu tạo sẵn của hệ thống

show_databases_init

Chúng ta tạo cơ sở dữ liệu đầu tiên, tên là menagerie

mysql> CREATE DATABASE menagerie;

Bây giờ chúng ta tạo người sử dụng mới, chẳng hạn tên là linh, rồi cấp (GRANT) cơ sở dữ liệu menagerie cho linh

mysql> CREATE USER 'linh'@'localhost' IDENTIFIED BY '12345' PASSWORD EXPIRE;
mysql> GRANT ALL ON menagerie.* TO 'linh'@'localhost';

user linh được tạo dạng có mật khẩu và được trao mật khẩu tạm thời là 12345.

Bạn thoát ra khỏi SQL, rồi nối trở lại với server nhưng với người sử dụng là linh

mysql> QUIT
Bye
bash-4.2$ mysql -u linh -p
Enter password:

Mật khẩu cần vào hiển nhiên là 12345, sau đó user linh cần đặt lại mật khẩu cho mình

mysql> ALTER USER 'linh'@'localhost' IDENTIFIED BY 'passwd_of_linh';

Ví dụ tiếp theo, user linh sử dụng cơ sở dữ liệu menagerie, rồi tạo bảng pet cho cơ sở dữ liệu này

mysql> USE menagerie;
Database changed
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

Lệnh DESCRIBE mô tả cấu trúc của bảng

describe_pet

Để vào dữ liệu bảng nhanh chóng, bạn soạn một tệp văn bản tên là pet.txt đặt trong thư mục nhà với nội dung ví dụ như dưới đây, rồi nạp dữ liệu vào bảng

pet_txt

Các cột theo mặc định cách nhau bởi 1 kí tự tab (\t), vậy bạn phải đảm bảo điều đó, kể cả đối với cột cuối dòng để dữ liệu vào bảng được chính xác. Với ô dữ liệu trống, bạn điền vào \N. Nạp dữ liệu như sau

mysql> LOAD DATA LOCAL INFILE '~/pet.txt' INTO TABLE pet;
Query OK, 9 rows affected (0.01 sec)
Records: 9 Deleted: 0 Skipped: 0 Warnings: 0

Một số ví dụ chất vấn cơ sở dữ liệu

Chọn toàn bộ bảng

select_all

Chọn tên, ngày sinh, ngày hiện hành và tính tuổi của các vật nuôi trong bảng pet

age

Chọn tất cả các bản ghi có tên khớp biểu thức chính quy: chữ cái đầu của tên là B hoặc C, và tên gồm 4 hoặc 5 kí tự.

reg

Chất vấn database còn rất nhiều kiểu nhưng đó không phải là mục tiêu chính ở đây. Chúng ta chỉ đưa ra ví dụ để thấy cơ sở dữ liệu chạy thực tế trên SQL server, rồi xử lý chúng trên web server ra sao.

Lập trình PHP

php

Đối tượng $mysqli được thiết lập với host là localhost, tên người sử dụng của MySQL là my_name (đây phải là tên một user của MySQL chứ không phải user của dịch vụ khác), mật khẩu là my_password, và menagerie là cơ sở dữ liệu cần kết nối. Có thể thêm 2 tham số thiết lập nữa là cổng và socket, nhưng vì các server và PHP của chúng ta đã được cấu hình đi cùng với nhau nên các tham số đó là không cần thiết.

$query là một biến kiểu xâu kí tự, chứa chất vấn SQL: Chọn các trường tên, loài, và ngày sinh của chúng, trong đó chỉ lấy loài chó và mèo.

Nếu kết nối thất bại thì sẽ có một thông báo lỗi kết nối, biến thành phần $mysqli->connect_errno là một biến nguyên (int) cho biết mã số lỗi, còn biến thành phần $mysqli->connect_error có kiểu xâu kí tự (string) mang nội dung thông điệp báo lỗi. Dấu chấm (.) là toán tử nối (hay ghép tiếp) các xâu kí tự (Concatenation)

Trong lệnh điều khiển if ($result = $mysqli->query($query)), biểu thức điều kiện đồng thời là một phép gán. Kết quả chất vấn cơ sở dữ liệu được gán vào biến $result.

Hàm mysqli_fetch_assoc() lấy kết quả chất vấn vào mảng $row đối với từng bản ghi, và các phần tử của mảng được kết xuất ra hàng của bảng html.

Hàm mysqli_free_result giải phóng bộ nhớ cho biến $result. Cuối cùng, đối tượng $mysqli đóng kết nối.

PHP kết xuất ra mã html, các trình duyệt khách chỉ nhận được mã html, nhưng không thể biết các chương trình ở máy chủ đã làm như thế nào. Dưới đây là hình ảnh kết quả

browser

Cài đặt PHP và các server

Web server đã có sẵn trong hệ thống Omarine. Bạn chỉ cần tải về 2 gói php-7.0.13-x86_64-1.txzmysql-5.7.16-x86_64-2.txz (trong tab Software), cộng thêm gói boost-1.59.0-x86_64-2.txz cung cấp thư viện nguồn cho MySQL. Trong Omarine có gói cơ sở dữ liệu cũ là mariadb-5.5.32-x86_64-1.txz. Gói này cần được gỡ bỏ, sau đó nâng cấp PHP, nâng cấp Boost và cài đặt MySQL

sudo removepkg mariadb-5.5.32-x86_64-1.txz &&
sudo upgradepkg php-7.0.13-x86_64-1.txz    &&
sudo upgradepkg boost-1.59.0-x86_64-2.txz  &&
sudo installpkg mysql-5.7.16-x86_64-2.txz

Bạn không cần phải làm gì thêm, mọi cấu hình cần thiết đã được sắp đặt trong các gói trên, và đã sẵn sàng để bạn lập trình với PHP.

Cập nhật:

Gói httpd-2.4.23-x86_64-1.txz mới xây dựng xong, bạn có thể nâng cấp web server

sudo upgradepkg httpd-2.4.23-x86_64-1.txz

 

Advertisements

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

%d bloggers like this: