PHP.INI File Configuration

Khi cài đặt phần mềm PHP trên máy của bạn, tệp php.ini sẽ được tạo trong thư mục cài đặt. Trong trường hợp của XAMPP, php.ini được tìm thấy trong thư mục c:\xampp\php. Đây là một tệp cấu hình quan trọng, điều khiển hiệu suất và thiết lập tất cả các tham số liên quan đến PHP.

Hàm phpinfo() hiển thị danh sách các tham số khác nhau và giá trị hiện tại của PHP, Apache, MySQL và các phần khác của cài đặt máy chủ web.

Chạy đoạn mã sau để hiển thị các cài đặt, một trong số đó cho biết đường dẫn đến tệp "php.ini":

<?php
   echo phpinfo();
?>

Loaded Configuration File

Tìm cài đặt "Loaded Configuration File" hiển thị vị trí của tệp php.ini.

C:\xampp\php\php.ini

Các khía cạnh khác nhau của hành vi PHP được cấu hình bởi một số lượng lớn các tham số (gọi là chỉ thị). Tệp "php.ini" đi kèm với hầu hết các dòng bắt đầu bằng ký hiệu chấm phẩy (;) - cho thấy rằng dòng đó đã được chú thích. Dòng không bị chú thích thực sự là chỉ thị có hiệu lực và giá trị của nó. Nói cách khác, để kích hoạt và gán một giá trị cho một chỉ thị cụ thể, hãy xóa ký tự chấm phẩy ở đầu dòng.

directive = value

Tên chỉ thị là *nhạy cảm với chữ hoa chữ thường. Các chỉ thị là biến được sử dụng để cấu hình PHP hoặc các phần mở rộng của PHP. Lưu ý rằng không có xác thực tên, vì vậy nếu một chỉ thị mong đợi không được tìm thấy, một giá trị mặc định sẽ được sử dụng, có thể là một chuỗi, một số, một hằng số PHP (ví dụ: E_ALL hoặc M_PI), hoặc một trong các hằng số INI (On, Off, True, False, Yes, No và None).

Thực tế, thư mục C:\XAMPP\PHP chứa hai tệp INI, một tệp được sử dụng trong môi trường sản xuất và tệp còn lại trong môi trường phát triển.

Tệp php.ini-development.ini rất giống với biến thể sản xuất của nó, ngoại trừ việc nó chi tiết hơn rất nhiều khi nói đến lỗi. Trong giai đoạn phát triển, hãy sao chép tệp này thành php.ini để có thể theo dõi các lỗi trong mã. Khi mã đã sẵn sàng để triển khai, hãy sử dụng tệp php.ini-production.ini làm tệp php.ini hiệu quả, tệp này về cơ bản sẽ giảm thiểu thông báo lỗi ở mức độ lớn.

Các chỉ thị trong php.ini được chia thành các danh mục khác nhau, như xử lý lỗi, xử lý dữ liệu, đường dẫn và thư mục, tải tệp, các phần mở rộng PHP và cài đặt mô-đun.

Dưới đây là danh sách một số chỉ thị quan trọng trong tệp "php.ini":

short_open_tag = Off

Các thẻ mở ngắn trông như thế này: <? ?>. Tùy chọn này phải được đặt thành Tắt nếu bạn muốn sử dụng các chức năng XML.

safe_mode = Off

Nếu điều này được đặt thành Bật, bạn có thể đã biên dịch PHP với cờ --enable-safe-mode. Chế độ an toàn chủ yếu liên quan đến việc sử dụng CGI. Xem giải thích trong phần "Tùy chọn biên dịch CGI" ở phần trước trong chương này.

safe_mode_exec_dir = [DIR]

Tùy chọn này chỉ có liên quan nếu chế độ an toàn (safe mode) được bật; nó cũng có thể được thiết lập với cờ --with-exec-dir trong quá trình xây dựng trên Unix. PHP trong chế độ an toàn chỉ thực thi các nhị phân bên ngoài từ thư mục này. Mặc định là /usr/local/bin. Điều này không liên quan gì đến việc phục vụ một trang web PHP/HTML bình thường.

safe_mode_allowed_env_vars = [PHP_]

Tùy chọn này thiết lập các biến môi trường nào mà người dùng có thể thay đổi trong chế độ an toàn. Mặc định chỉ có những biến được thêm tiền tố "PHP_". Nếu chỉ thị này để trống, hầu hết các biến đều có thể bị thay đổi.

safe_mode_protected_env_vars = [LD_LIBRARY_PATH]

Tùy chọn này xác định các biến môi trường mà người dùng không thể thay đổi trong chế độ an toàn, ngay cả khi safe_mode_allowed_env_vars được thiết lập một cách thoải mái.

disable_functions = [function1, function2...]

Một bổ sung đáng hoan nghênh cho cấu hình PHP4 và được duy trì trong PHP5 là khả năng vô hiệu hóa các hàm được chọn vì lý do bảo mật. Trước đây, điều này yêu cầu phải chỉnh sửa thủ công mã C mà PHP được tạo ra. Các hàm liên quan đến hệ thống tệp, hệ thống và mạng có lẽ nên là những hàm đầu tiên bị loại bỏ, vì việc cho phép khả năng ghi tệp và thay đổi hệ thống qua HTTP chưa bao giờ là một ý tưởng an toàn.

max_execution_time = 30

Hàm set_time_limit() sẽ không hoạt động trong chế độ an toàn, vì vậy đây là cách chính để làm cho một kịch bản hết thời gian trong chế độ an toàn. Trên Windows, bạn phải hủy bỏ dựa trên bộ nhớ tối đa đã tiêu thụ thay vì thời gian. Bạn cũng có thể sử dụng cài đặt thời gian chờ của Apache để hết thời gian nếu bạn sử dụng Apache, nhưng điều đó cũng sẽ áp dụng cho các tệp không phải PHP trên trang web.

error_reporting = E_ALL & ~E_NOTICE

Giá trị mặc định là E_ALL & ~E_NOTICE, tức là tất cả các lỗi ngoại trừ thông báo. Các máy chủ phát triển nên được đặt ít nhất là giá trị mặc định; chỉ có các máy chủ sản xuất mới nên xem xét giá trị thấp hơn.

error_prepend_string = [""]

Với phần đầu và phần cuối là error_append_string, cài đặt này cho phép bạn làm cho thông điệp lỗi có màu khác so với văn bản khác, hoặc những gì bạn muốn.

warn_plus_overloading = Off

Cài đặt này sẽ phát ra cảnh báo nếu toán tử + được sử dụng với các chuỗi, như trong giá trị của một biểu mẫu.

variables_order = EGPCS

Cài đặt cấu hình này thay thế gpc_order. Cả hai đều đã bị ngừng sử dụng cùng với register_globals. Nó thiết lập thứ tự của các biến khác nhau: Môi trường, GET, POST, COOKIE và SERVER (còn gọi là Tích hợp sẵn). Bạn có thể thay đổi thứ tự này.

Các biến sẽ bị ghi đè lần lượt theo thứ tự từ trái sang phải, với biến ở bên phải nhất chiến thắng mỗi lần. Điều này có nghĩa là nếu bạn giữ cài đặt mặc định và tình cờ sử dụng cùng một tên cho một biến môi trường, một biến POST và một biến COOKIE, thì biến COOKIE sẽ sở hữu tên đó vào cuối quá trình. Trong thực tế, điều này không xảy ra nhiều.

register_globals = Off

Cài đặt này cho phép bạn quyết định xem bạn có muốn đăng ký các biến EGPCS là toàn cục hay không. Cài đặt này hiện đã lỗi thời, và kể từ PHP 4.2, cờ này được đặt thành Tắt theo mặc định. Hãy sử dụng các mảng siêu toàn cục thay thế. Tất cả các đoạn mã chính trong cuốn sách này đều sử dụng các mảng siêu toàn cục.

magic_quotes_gpc = On

Cài đặt này thoát các dấu nháy trong dữ liệu GET/POST/COOKIE đến. Nếu bạn sử dụng nhiều biểu mẫu có thể gửi đến chính nó hoặc các biểu mẫu khác và hiển thị giá trị biểu mẫu, bạn có thể cần đặt chỉ thị này thành Bật hoặc chuẩn bị sử dụng hàm addslashes() trên dữ liệu kiểu chuỗi.

magic_quotes_runtime = Off

Cài đặt này thoát các dấu ngoặc kép trong các chuỗi văn bản và cơ sở dữ liệu đến. Hãy nhớ rằng SQL thêm dấu gạch chéo vào các dấu nháy đơn và dấu nháy khi lưu trữ chuỗi và không loại bỏ chúng khi trả về. Nếu cài đặt này tắt, bạn sẽ cần sử dụng stripslashes() khi xuất bất kỳ loại dữ liệu chuỗi nào từ cơ sở dữ liệu SQL. Nếu magic_quotes_sybase được đặt là Bật, cài đặt này phải là Tắt.

magic_quotes_sybase = Off

Cài đặt này thoát các dấu nháy đơn trong các chuỗi văn bản và cơ sở dữ liệu đến bằng các dấu nháy đơn theo kiểu Sybase thay vì bằng dấu gạch chéo ngược. Nếu magic_quotes_runtime được đặt thành Bật, thì cài đặt này phải được tắt.

auto-prepend-file = [path/to/file]

Nếu một đường dẫn được chỉ định ở đây, PHP phải tự động include() nó ở đầu mỗi tệp PHP. Các hạn chế về đường dẫn bao gồm cũng được áp dụng.

auto-append-file = [path/to/file]

Nếu một đường dẫn được chỉ định ở đây, PHP phải tự động include() nó vào cuối mỗi tệp PHP, trừ khi bạn thoát bằng cách sử dụng hàm exit(). Các hạn chế về đường dẫn bao gồm cũng được áp dụng.

include_path = [DIR]

Nếu bạn đặt giá trị này, bạn sẽ chỉ được phép bao gồm hoặc yêu cầu các tệp từ những thư mục này. Thư mục bao gồm thường nằm dưới thư mục gốc tài liệu của bạn; điều này là bắt buộc nếu bạn đang chạy ở chế độ an toàn. Đặt giá trị này thành . để bao gồm các tệp từ cùng thư mục với kịch bản của bạn. Nhiều thư mục được phân tách bằng dấu hai chấm: .:/usr/local/apache/htdocs:/usr/local/lib.

doc_root = [DIR]

Nếu bạn đang sử dụng Apache, bạn đã thiết lập một thư mục gốc tài liệu cho máy chủ hoặc máy chủ ảo này trong httpd.conf. Đặt giá trị này ở đây nếu bạn đang sử dụng chế độ an toàn hoặc nếu bạn muốn bật PHP chỉ trên một phần của trang web của bạn (ví dụ: chỉ trong một thư mục con của thư mục gốc Web của bạn).

file_uploads = [on/off]

Bật cờ này nếu bạn sẽ tải lên tệp bằng cách sử dụng script PHP.

upload_tmp_dir = [DIR]

Đừng bình luận dòng này trừ khi bạn hiểu các tác động của việc tải lên HTTP!

session.save-handler = files

Ngoại trừ trong những trường hợp hiếm hoi, bạn sẽ không muốn thay đổi cài đặt này. Vì vậy, đừng chạm vào nó.

ignore_user_abort = [On/Off]

Cài đặt này kiểm soát những gì xảy ra nếu một khách truy cập trang web nhấn nút Dừng của trình duyệt. Mặc định là Bật, có nghĩa là script sẽ tiếp tục chạy cho đến khi hoàn thành hoặc hết thời gian. Nếu cài đặt được thay đổi thành Tắt, script sẽ bị hủy. Cài đặt này chỉ hoạt động trong chế độ module, không phải CGI.

mysql.default_host = hostname

Máy chủ mặc định để sử dụng khi kết nối đến máy chủ cơ sở dữ liệu nếu không có máy chủ nào khác được chỉ định.

mysql.default_user = username

Tên người dùng mặc định để sử dụng khi kết nối đến máy chủ cơ sở dữ liệu nếu không có tên nào khác được chỉ định.

mysql.default_password = password

Mật khẩu mặc định để sử dụng khi kết nối đến máy chủ cơ sở dữ liệu nếu không có mật khẩu nào khác được chỉ định.