Cấu hình tệp PHP.INI: Hướng dẫn cho người mới bắt đầu

Xin chào các pháp sư PHP tương lai! Hôm nay, chúng ta sẽ bắt đầu một chuyến hành trình thú vị vào thế giới cấu hình PHP. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người bạn thân thiện dẫn đường cho bạn trong cuộc phiêu lưu này. Cuối cùng của bài hướng dẫn này, bạn sẽ cấu hình PHP như một chuyên gia!

PHP.INI File Configuration

PHP.INI là gì?

Trước khi chúng ta đi sâu vào, hãy nói về PHP.INI thực sự là gì. Hãy tưởng tượng bạn đang thiết lập một chiếc điện thoại mới. Bạn có lẽ muốn điều chỉnh một số thiết lập để làm cho nó hoạt động theo ý bạn, phải không? Well, PHP.INI giống như menu thiết lập cho PHP. Nó là một tệp cấu hình cho PHP biết cách hành xử.

Tệp Cấu hình Đã Tải

Trước hết, hãy tìm hiểu tệp PHP.INI nào mà hệ thống của bạn thực sự đang sử dụng. PHP có thể sử dụng các tệp cấu hình khác nhau tùy thuộc vào cách nó được thiết lập. Dưới đây là một cách đơn giản để kiểm tra:

<?php
phpinfo();
?>

Lưu này thành một tệp PHP (giả sử là info.php) và chạy nó trong trình duyệt web của bạn. Tìm kiếm mục "Loaded Configuration File". Đó là tệp PHP.INI đang hoạt động của bạn!

Các thiết lập PHP.INI phổ biến

Bây giờ, hãy khám phá một số thiết lập quan trọng nhất trong PHP.INI. Tôi sẽ giải thích mỗi thiết lập làm gì và cho bạn các ví dụ về cách sử dụng chúng.

short_open_tag = Off

Thiết lập này quyết định xem PHP có nên cho phép dạng mở thẻ ngắn của PHP (<?) hay không. Khi nó tắt, bạn phải sử dụng thẻ mở đầy đủ của PHP (<?php).

<?php
echo "Xin chào, Thế giới!";
?>

Với short_open_tag = On, bạn có thể viết:

<? echo "Xin chào, Thế giới!"; ?>

Nhưng thường được khuyến nghị để giữ nó tắt để có tính tương thích tốt hơn.

safe_mode = Off

Chế độ an toàn là một tính năng bảo mật trong các phiên bản cũ của PHP. Nó hiện已被废弃 và loại bỏ trong PHP 5.4.0 và sau đó. Nếu bạn sử dụng phiên bản PHP hiện đại, bạn sẽ không thấy thiết lập này.

disable_functions = [function1, function2...]

Đây là một tính năng bảo mật mạnh mẽ. Nó cho phép bạn vô hiệu hóa các hàm PHP cụ thể mà bạn coi là nguy hiểm. Ví dụ:

disable_functions = exec,passthru,shell_exec,system

Điều này sẽ ngăn không cho PHP thực thi các lệnh hệ thống, có thể là một rủi ro bảo mật.

max_execution_time = 30

Thiết lập này đặt thời gian tối đa tính bằng giây mà một скрипт được phép chạy trước khi bị chấm dứt. Nó giống như đặt một计时器 cho các скрипт của bạn.

<?php
// Skript này sẽ chạy trong tối đa 30 giây
for ($i = 0; $i < 1000000; $i++) {
echo $i . "<br>";
}
?>

error_reporting = E_ALL & ~E_NOTICE

Thiết lập này kiểm soát các lỗi nào được báo cáo. E_ALL có nghĩa là báo cáo tất cả các lỗi, và ~E_NOTICE có nghĩa là ngoại trừ các thông báo.

<?php
// Với E_ALL & ~E_NOTICE, này sẽ không hiển thị lỗi
echo $undefinedVariable;
?>

register_globals = Off

Đây là một tính năng cũ và không an toàn. Nó đã bị废弃 và loại bỏ trong PHP 5.4.0. Luôn giữ nó tắt trong các phiên bản cũ.

magic_quotes_gpc = On

Thiết lập này tự động escape dữ liệu đầu vào để làm cho nó an toàn khỏi SQL injection. Tuy nhiên, nó đã bị废弃 và loại bỏ trong PHP 5.4.0. Trong PHP hiện đại, bạn nên sử dụng các câu lệnh đã chuẩn bị thay thế.

file_uploads = [on/off]

Thiết lập này kiểm soát xem việc tải lên tệp có được phép hay không.

<?php
if ($_FILES) {
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Tệp hợp lệ, và đã được tải lên thành công.\n";
} else {
echo "Tải lên thất bại.\n";
}
}
?>

session.save-handler = files

Thiết lập này quyết định cách dữ liệu phiên được lưu trữ. Mặc định là 'files', có nghĩa là dữ liệu phiên được lưu trữ trong các tệp trên máy chủ.

<?php
session_start();
$_SESSION['user'] = 'John Doe';
echo "Dữ liệu phiên đã được lưu!";
?>

ignore_user_abort = [On/Off]

Thiết lập này quyết định xem một скрипт có nên tiếp tục chạy sau khi người dùng đã đóng kết nối hay không.

<?php
ignore_user_abort(true);
set_time_limit(0);

// Skript này sẽ tiếp tục chạy ngay cả khi người dùng đóng trình duyệt
while (true) {
file_put_contents('log.txt', date('Y-m-d H:i:s') . "\n", FILE_APPEND);
sleep(1);
}
?>

Thiết lập MySQL

PHP.INI cũng bao gồm các thiết lập cho kết nối MySQL:

Thiết lập Mô tả Ví dụ
mysql.default_host Máy chủ MySQL mặc định mysql.default_host = localhost
mysql.default_user Tên người dùng MySQL mặc định mysql.default_user = root
mysql.default_password Mật khẩu MySQL mặc định mysql.default_password = password123

Nhớ rằng, thường tốt hơn nên đặt các thiết lập này trong скрипт của bạn thay vì trong PHP.INI vì lý do bảo mật.

<?php
$conn = mysqli_connect('localhost', 'root', 'password123');
if (!$conn) {
die("Kết nối thất bại: " . mysqli_connect_error());
}
echo "Kết nối thành công";
?>

Và thế là bạn đã có nó, các bạn! Bạn vừa bước những bước đầu tiên vào thế giới cấu hình PHP. Nhớ rằng, mỗi thiết lập trong số này có thể ảnh hưởng lớn đến cách các скрипт PHP của bạn hoạt động, vì vậy hãy sử dụng chúng một cách khôn ngoan. Khi bạn tiếp tục hành trình PHP của mình, bạn sẽ trở nên quen thuộc hơn với các thiết lập này và cách sử dụng chúng để đạt được lợi thế.

Chúc mừng编码, và mong rằng các скрипт PHP của bạn luôn chạy mượt mà!

Credits: Image by storyset