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

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à 3306 và socket 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

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

Để 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

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

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

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ự.

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

Đố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ả

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.txz và mysql-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