File wp-config.php WordPress: tác dụng và cách chỉnh sửa
File wp-config.php chứa thông tin đăng nhập cơ sở dữ liệu, khóa bảo mật và cài đặt WordPress. Xem file nằm ở đâu, từng phần làm gì và cách sửa an toàn.
wp-config.php là file cho WordPress biết cách kết nối với cơ sở dữ liệu và cách chạy. File thường nằm trong thư mục gốc của bản cài, cạnh wp-admin và wp-content. Bạn có thể thêm hoặc đổi cài đặt một cách an toàn phía trên dòng “That’s all, stop editing!” (Vậy là xong, dừng chỉnh sửa!), và nên để yên hai khối mã bên dưới dòng đó. Hãy sao lưu trước, vì một lỗi gõ có thể làm sập toàn bộ trang web.
Điểm chính
- File chứa mật khẩu cơ sở dữ liệu và khóa bảo mật, nên hãy xem nó như một mật khẩu và không bao giờ đăng nội dung của nó lên diễn đàn hay khung chat hỗ trợ.
- Cài đặt tùy chỉnh đặt phía trên dòng “stop editing”. Dòng cuối cùng bên dưới sẽ tải WordPress, và cài đặt sau dòng đó sẽ đến quá muộn.
- Gói WordPress bạn tải về có
wp-config-sample.php. Filewp-config.phpthật được tạo trong lúc thiết lập.- Đừng đổi
$table_prefixtrên trang đang chạy bằng cách chỉ sửa dòng đó. WordPress sẽ hoạt động như thể chưa được cài đặt.
Tìm wp-config.php ở đâu
Kết nối qua SFTP hoặc mở trình quản lý file của hosting, rồi vào thư mục chứa wp-admin, wp-includes và wp-content. Tài liệu WordPress gọi đây là thư mục gốc của các file WordPress.
Nếu không có ở đó, hãy tìm lên một thư mục. Trình tải của WordPress kiểm tra thư mục cài đặt trước, rồi đến thư mục cha, và bỏ qua thư mục cha nếu nó có wp-settings.php riêng, vì điều đó có nghĩa là một bản cài WordPress khác đang ở đó.
Nếu cả hai nơi đều không có file, WordPress đưa khách truy cập đến màn hình thiết lập. Màn hình đó tạo file từ wp-config-sample.php. Khi không ghi được vào thư mục, nó hiện nội dung để bạn dán thủ công vào một file mới.
Từng phần mặc định làm gì
wp-config-sample.php là file mẫu, gồm các phần sau theo đúng thứ tự này:
| Phần | Chứa gì | Có đổi được không? |
|---|---|---|
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST | Thông tin đăng nhập cơ sở dữ liệu. File mẫu dùng localhost làm host, và nhà cung cấp hosting có thể cho bạn giá trị thật. | Có, khi thông tin cơ sở dữ liệu thay đổi. Giá trị sai gây ra lỗi thiết lập kết nối cơ sở dữ liệu. |
DB_CHARSET, DB_COLLATE | Cách lưu văn bản trong cơ sở dữ liệu. Mặc định là utf8mb4 và một giá trị rỗng. | Chú thích trong chính file mẫu về DB_COLLATE khuyên đừng đổi nếu còn nghi ngờ. |
Từ AUTH_KEY đến NONCE_SALT | Tám khóa bảo mật và salt dùng cho cookie đăng nhập. | Có. Đổi chúng sẽ đăng xuất mọi người dùng. |
$table_prefix | Phần chữ ở đầu tên mỗi bảng cơ sở dữ liệu, mặc định là wp_. | Chỉ lúc cài đặt, trừ khi bạn cũng đổi tên các bảng và cập nhật các mục đã lưu trong cơ sở dữ liệu có tên dùng tiền tố đó. |
WP_DEBUG | Chế độ gỡ lỗi, đặt là false trong file mẫu. | Có. Hướng dẫn vị trí nhật ký gỡ lỗi chỉ cách gửi lỗi vào một file. |
| Chú thích “custom values” (giá trị tùy chỉnh) | Khoảng trống cho cài đặt của riêng bạn, kết thúc ở dòng “stop editing”. | Có, phần bạn thêm nằm ở đây. |
ABSPATH và dòng wp-settings.php | Đường dẫn đến WordPress, rồi đến dòng tải phần còn lại. | Không. Hãy giữ nguyên. |
Khóa mới chỉ cách một cú nhấp: dịch vụ khóa bí mật của WordPress.org cho bạn một bộ mới mỗi lần tải. Hãy thay cả tám dòng bằng bộ mới.
File cũ hơn có thể không có chú thích “custom values” và ghi “Happy blogging” (Chúc viết blog vui vẻ) thay vì “Happy publishing” (Chúc xuất bản vui vẻ). Cả hai đều hoạt động, và quy tắc vẫn vậy: thêm cài đặt phía trên dòng đó.
Các cài đặt thường được thay đổi
Mỗi cài đặt chỉ một dòng. Tất cả đều lấy từ tài liệu wp-config.php, còn giá trị mặc định lấy từ default-constants.php của WordPress.
// Memory for the front end, then for wp-admin
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
// Keep at most 3 revisions per post (false turns revisions off)
define( 'WP_POST_REVISIONS', 3 );
// Autosave every 180 seconds
define( 'AUTOSAVE_INTERVAL', 180 );
// Empty the trash after 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
// Remove the theme and plugin file editor from wp-admin
define( 'DISALLOW_FILE_EDIT', true );
// Force HTTPS for logins and wp-admin
define( 'FORCE_SSL_ADMIN', true );
// Set the site addresses here
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
Chỉ sao chép những dòng bạn cần. Một vài dòng có chi tiết đáng biết:
- Bộ nhớ: WordPress mặc định dùng 40M, hoặc 64M trên multisite, và 256M cho wp-admin trừ khi PHP đã cho phép nhiều hơn. Nếu hosting không cho đổi giới hạn, WordPress dùng giới hạn PHP đang có. Hướng dẫn lỗi hết bộ nhớ nói rõ phải làm gì khi đó.
- Bản sửa đổi: mặc định đang bật. Đặt
falseđể tắt, hoặc một con số để giới hạn. - Tự động lưu và thùng rác: mặc định là 60 giây và 30 ngày. Đặt
EMPTY_TRASH_DAYSthành0sẽ tắt thùng rác, và tài liệu cảnh báo rằng khi đó WordPress sẽ không hỏi xác nhận khi ai đó nhấp “Delete Permanently” (Xóa vĩnh viễn). - Trình sửa file: hướng dẫn tăng cường bảo mật nói rằng việc này không ngăn được kẻ tấn công tải lên file độc hại, dù có thể chặn một số cuộc tấn công.
DISALLOW_FILE_MODSđi xa hơn, chặn cả việc cài đặt và cập nhật plugin và theme. - HTTPS: khi thiết lập “Địa chỉ WordPress” đã bắt đầu bằng
https, WordPress tự đặtFORCE_SSL_ADMINthànhtrue. Dòng này chỉ thay đổi điều gì đó khi địa chỉ không bắt đầu bằnghttps. - Địa chỉ trang: các dòng này ghi đè giá trị đã lưu mà không đổi dữ liệu trong cơ sở dữ liệu. Hãy viết cả phần
https://.
Một cài đặt cần chuẩn bị kỹ hơn. define( 'DISABLE_WP_CRON', true ); ngăn lượt truy cập trang khởi chạy tác vụ theo lịch, nên hãy tạo cron job trên server cho wp-cron.php trước khi bật, nếu không bài viết hẹn giờ và các công việc định kỳ khác sẽ không chạy.
Cách chỉnh sửa wp-config.php an toàn
- Tải một bản sao về trước. Giữ nó trên máy tính của bạn. Bản sao để lại trên server với tên như
wp-config.php.bakcó thể đọc được trong trình duyệt, vì server không còn coi nó là PHP. - Mở file bằng trình soạn thảo văn bản thuần. Hướng dẫn chỉnh sửa của WordPress coi Notepad++, Sublime Text và Visual Studio Code là phù hợp, và cảnh báo tránh Google Docs và Microsoft Word vì trình xử lý văn bản đổi dấu ngoặc kép và có thể thêm mã làm hỏng file.
- Tìm dòng “stop editing” và đặt các dòng mới ngay phía trên. Nếu cài đặt đã được khai báo ở phía trên, hãy đổi dòng đó.
- Lưu và tải lên, rồi mở trang web trong cửa sổ trình duyệt riêng tư, cùng một trang trong wp-admin.
- Nếu có gì hỏng, hãy đặt bản sao trở lại. Cách này hoàn tác chỉnh sửa ngay cả khi wp-admin không tải được.
Chuyển file lên trên web root
Hướng dẫn tăng cường bảo mật nói rằng wp-config.php có thể lưu ở thư mục phía trên bản cài WordPress một cấp, và mã trình tải xử lý việc đó mà không cần cài đặt thêm. Hãy chuyển file, rồi kiểm tra trang web vẫn tải được. Việc chuyển có hai giới hạn:
- Thư mục cha không được chứa bản cài WordPress khác. Trình tải bỏ qua thư mục cha có
wp-settings.phpriêng. - Lên một cấp chỉ riêng tư khi WordPress nằm ở web root. Nếu WordPress nằm trong thư mục con như
/blog/, lên một cấp thường vẫn công khai.
Cùng hướng dẫn đó nói rằng một số người cho rằng việc chuyển file có lợi ích bảo mật tối thiểu, và có thể tạo ra lỗ hổng nghiêm trọng nếu làm bất cẩn. Vì vậy hãy xem đây là tùy chọn. Trên Apache, hướng dẫn cũng đưa khối sau để đặt ở đầu file .htaccess, giúp từ chối các yêu cầu trực tiếp đến file:
<Files "wp-config.php">
Require all denied
</Files>
Hướng dẫn bảo mật .htaccess của chúng tôi đề cập quy tắc đó cùng các quy tắc khác.
Quyền file của wp-config.php
Tài liệu WordPress đưa ra các con số hơi khác nhau, tùy tình huống:
- Hướng dẫn tăng cường bảo mật nói rằng chỉ bạn và web server nên đọc được file, và theo hướng dẫn thì điều đó thường có nghĩa là 400 hoặc 440.
- Hướng dẫn về quyền file nêu 440 hoặc 400 trên shared hosting có suexec, để người dùng khác trên server không đọc được file. Hướng dẫn cũng nêu 600 làm ví dụ đã bảo mật.
- Với các file WordPress thông thường, hướng dẫn đó nêu 644 hoặc 640.
Con số nào dùng được phụ thuộc vào việc web server chạy dưới người dùng hệ thống nào. Web server phải đọc được file, nên nếu trang web ngừng tải sau khi đổi, hãy trả về giá trị trước đó và hỏi nhà cung cấp hosting xem giá trị nào hợp với hệ thống của họ.
Lỗi thường gặp
- Dán cài đặt sau dòng
wp-settings.php. Dòng đó tải WordPress và đặt các giá trị mặc định. Hằng số PHP không thể thay đổi trong khi script chạy, nên dòng của bạn không có tác dụng. - Khai báo cùng một cài đặt hai lần. Dòng đầu tiên đặt giá trị và dòng thứ hai không thể thay đổi nó. Tài liệu PHP cho biết khai báo lại hằng số đã bị phản đối (deprecated) từ PHP 8.5, nên cũng có thể xuất hiện thông báo. Hãy tìm tên cài đặt trong file trước khi thêm.
- Đặt dấu ngoặc quanh true hoặc false.
'false'là chuỗi không rỗng, và PHP coi nó là true. Hãy viếtfalsekhông có dấu ngoặc. Kích thước như'256M'thì cần dấu ngoặc. - Dấu ngoặc cong từ trình xử lý văn bản hoặc trang web. PHP cần dấu ngoặc thẳng, nên dấu ngoặc cong gây lỗi khiến trang web không tải được.
- Hiện lỗi gỡ lỗi trên trang đang chạy.
WP_DEBUG_DISPLAYmặc định làtrue, nên nếu chỉ bậtWP_DEBUG, lỗi sẽ hiện trên trang cho khách truy cập. Hướng dẫn vị trí nhật ký gỡ lỗi chỉ cách gửi lỗi vào một file. - Để
WP_ALLOW_REPAIRluôn bật. Tài liệu nói chỉ bật khi cần và tắt ngay khi vấn đề đã được giải quyết.
Câu hỏi thường gặp
wp-config.php trong WordPress là gì?
Đó là file cấu hình mà WordPress tải khi khởi động. File chứa thông tin đăng nhập cơ sở dữ liệu, khóa bảo mật và tiền tố bảng, đồng thời là nơi bạn thêm các cài đặt như WP_DEBUG hoặc WP_MEMORY_LIMIT.
File wp-config.php nằm ở đâu?
Thường nằm trong thư mục gốc của bản cài WordPress, nơi cũng chứa wp-admin, wp-includes và wp-content. WordPress cũng chấp nhận file nằm ở thư mục phía trên bản cài một cấp, miễn là thư mục đó không có wp-settings.php.
Tôi thêm mã vào đâu trong wp-config.php? Phía trên dòng That’s all, stop editing! Happy publishing. (Vậy là xong, dừng chỉnh sửa! Chúc xuất bản vui vẻ.) File cũ hơn ghi Happy blogging. (Chúc viết blog vui vẻ.) Dòng cuối cùng bên dưới sẽ tải WordPress, nên cài đặt đặt sau dòng đó sẽ đến quá muộn.
Chỉnh sửa wp-config.php có an toàn không? Có, nếu bạn giữ bản sao lưu và dùng trình soạn thảo văn bản thuần. Một lỗi gõ có thể khiến toàn bộ trang web không tải được, kể cả wp-admin, nên hãy tải một bản sao về trước. Nếu trang web hỏng sau khi sửa, hãy đặt bản sao trở lại.
Điều gì xảy ra nếu tôi xóa wp-config.php? WordPress không còn tìm thấy thông tin đăng nhập cơ sở dữ liệu và bắt đầu quy trình thiết lập, kèm lời nhắc tạo file cấu hình. Nội dung của bạn vẫn nằm trong cơ sở dữ liệu, nên khôi phục bản sao lưu hoặc tạo lại file với cùng thông tin sẽ kết nối lại trang web.
wp-config.php nên có quyền truy cập nào? Hướng dẫn tăng cường bảo mật của WordPress nói rằng chỉ bạn và web server nên đọc được file, thường có nghĩa là 400 hoặc 440. Hướng dẫn về quyền file của WordPress cũng nêu 600. Web server vẫn phải đọc được file, nên hãy hỏi nhà cung cấp hosting nếu trang web ngừng tải.
Nguồn tham khảo
- WordPress Advanced Administration: wp-config.php, Hardening WordPress, Quyền file, Chỉnh sửa file
- Mã nguồn WordPress: wp-config-sample.php, wp-load.php, default-constants.php, setup-config.php, cron.php
- Tài liệu PHP: Hằng số, Kiểu boolean
Tạo các cài đặt bạn cần mà không phải gõ tay, kể cả khóa bảo mật mới, bằng công cụ tạo wp-config.php miễn phí.
FAQ
Câu hỏi
wp-config.php trong WordPress là gì?
Đó là file cấu hình mà WordPress tải khi khởi động. File chứa thông tin đăng nhập cơ sở dữ liệu, khóa bảo mật và tiền tố bảng, đồng thời là nơi bạn thêm các cài đặt như WP_DEBUG hoặc WP_MEMORY_LIMIT.
File wp-config.php nằm ở đâu?
Thường nằm trong thư mục gốc của bản cài WordPress, nơi cũng chứa wp-admin, wp-includes và wp-content. WordPress cũng chấp nhận file nằm ở thư mục phía trên bản cài một cấp, miễn là thư mục đó không có wp-settings.php.
Tôi thêm mã vào đâu trong wp-config.php?
Phía trên dòng That's all, stop editing! Happy publishing. (Vậy là xong, dừng chỉnh sửa! Chúc xuất bản vui vẻ.) File cũ hơn ghi Happy blogging. (Chúc viết blog vui vẻ.) Dòng cuối cùng bên dưới sẽ tải WordPress, nên cài đặt đặt sau dòng đó sẽ đến quá muộn.
Chỉnh sửa wp-config.php có an toàn không?
Có, nếu bạn giữ bản sao lưu và dùng trình soạn thảo văn bản thuần. Một lỗi gõ có thể khiến toàn bộ trang web không tải được, kể cả wp-admin, nên hãy tải một bản sao về trước. Nếu trang web hỏng sau khi sửa, hãy đặt bản sao trở lại.
Điều gì xảy ra nếu tôi xóa wp-config.php?
WordPress không còn tìm thấy thông tin đăng nhập cơ sở dữ liệu và bắt đầu quy trình thiết lập, kèm lời nhắc tạo file cấu hình. Nội dung của bạn vẫn nằm trong cơ sở dữ liệu, nên khôi phục bản sao lưu hoặc tạo lại file với cùng thông tin sẽ kết nối lại trang web.
wp-config.php nên có quyền truy cập nào?
Hướng dẫn tăng cường bảo mật của WordPress nói rằng chỉ bạn và web server nên đọc được file, thường có nghĩa là 400 hoặc 440. Hướng dẫn về quyền file của WordPress cũng nêu 600. Web server vẫn phải đọc được file, nên hãy hỏi nhà cung cấp hosting nếu trang web ngừng tải.