Hướng dẫn
Quảng cáo

Cách ngăn WordPress yêu cầu đăng nhập FTP/SFTP

Tìm hiểu cách buộc WordPress sử dụng hệ thống tệp thay vì FTP để xử lý tệp. Yêu cầu đăng nhập FTP/SFTP khi cài đặt plugin/giao diện WordPress sẽ được tắt

Sau khi triển khai trang web WordPress cho một trong những VPS của tôi và cố gắng cài đặt một plugin trong môi trường này, hộp thoại của Wordpress xuất hiện và nó thông báo rằng " To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your web host (Để thực hiện hành động được yêu cầu, WordPress cần truy cập vào máy chủ web của bạn. Vui lòng nhập thông tin đăng nhập FTP của bạn để tiếp tục. Nếu bạn không nhớ thông tin đăng nhập của mình, bạn nên liên hệ với công ty lưu trữ web của mình )".

yêu cầu đăng nhập FTP khi cài đặt plugin/giao diện WordPress

Có một số điểm kỹ thuật gây ra sự cố này và có thể không được người dùng thông thường quan tâm (người dùng thông thường có thể sẽ yêu cầu quản trị viên máy chủ cung cấp thông tin đăng nhập FTP vì cách này dễ dàng và an toàn hơn). Vâng, nó có vẻ là cách an toàn hơn cho hệ thống vì đây là một biện pháp bảo mật khá tốt, do đó việc khai thác hoặc tấn công plugin từ các nguồn không đáng tin cậy có thể không thể sửa đổi các tệp được lưu trữ trong máy chủ của bạn.

Tuy nhiên, nếu bạn là nhà phát triển và bạn biết về quyền tệp trong môi trường Linux và bạn đang gặp phải vấn đề này, có thể bạn đã chỉ định quyền cho thư mục wp-content/plugins để WordPress có thể cài đặt các plugin mà không gặp vấn đề về quyền, nhưng, vấn đề vẫn tồn tại phải không? Trong bài viết này, tôi sẽ cung cấp cho bạn giải thích kỹ thuật về vấn đề và cách giải quyết nó.

Lý do tại sao điều này xảy ra?

Hộp thoại này được kích hoạt khi các lớp hệ thống tệp của WordPress được sử dụng. Trong trường hợp này, khi cố gắng cài đặt một plugin hoặc giao diện, nội dung của plugin cần phải được giải nén ra wp-content/plugins hoặc trong trường hợp của một giao diện thì là thư mục wp-content/themes đúng vậy không? Và mã của hàm get_filesystem_method:

Ví dụ

/**
 * Determines which method to use for reading, writing, modifying, or deleting
 * files on the filesystem.
 *
 * The priority of the transports are: Direct, SSH2, FTP PHP Extension, FTP Sockets
 * (Via Sockets class, or `fsockopen()`). Valid values for these are: 'direct', 'ssh2',
 * 'ftpext' or 'ftpsockets'.
 *
 * The return value can be overridden by defining the `FS_METHOD` constant in `wp-config.php`,
 * or filtering via {@see 'filesystem_method'}.
 *
 * @link https://wordpress.org/support/article/editing-wp-config-php/#wordpress-upgrade-constants
 *
 * Plugins may define a custom transport handler, See WP_Filesystem().
 *
 * @since 2.5.0
 *
 * @global callable $_wp_filesystem_direct_method
 *
 * @param array  $args                         Optional. Connection details. Default empty array.
 * @param string $context                      Optional. Full path to the directory that is tested
 *                                             for being writable. Default empty.
 * @param bool   $allow_relaxed_file_ownership Optional. Whether to allow Group/World writable.
 *                                             Default false.
 * @return string The transport to use, see description for valid return values.
 */
function get_filesystem_method( $args = array(), $context = '', $allow_relaxed_file_ownership = false ){ /* */ }

Cố gắng tạo tệp tạm thời trong thư mục wp-content. Nếu quá trình tạo không thành công, thì hàm được sử dụng để làm việc với tệp sẽ là thông qua FTP.

Giải pháp

Vì vậy, vấn đề thực sự là chủ sở hữu quy trình hiện tại (chủ sở hữu quy trình chạy WordPress như apache hoặc PHP) không có quyền ghi trực tiếp vào thư mục gốc wp-content. Tuy nhiên, nếu bạn nói rằng bạn đã sử dụng CHMOD sửa quyền cho wp-content/pluginswp-content/themes, thì bạn cần buộc WordPress sử dụng hệ thống tệp gốc. Bạn có thể thực hiện việc này bằng cách khai báo lệnh sau trong tệp wp-config.php của mình :

Ví dụ

define('FS_METHOD', 'direct');

Sau khi buộc sử dụng hệ thống tệp, hộp thoại sẽ không xuất hiện nữa và quá trình cài đặt plugin và chủ đề sẽ thành công nếu và chỉ khi quyền của các thư mục được đề cập cấp quyền truy cập cho người dùng chạy quy trình WordPress.

Nếu sau khi sửa đổi này, việc cài đặt plugin và chủ đề không thành công, bạn cần điều chỉnh quyền của thư mục wp-content/pluginswp-content/themes. Bạn có thể xác định người dùng nào đang chạy dịch vụ WordPress bằng cách chạy mã PHP sau trong phiên bản WordPress của bạn:

Ví dụ

<?php 
    // for example "www-data"
    echo(exec("whoami")); 
?>


Sau đó, điều chỉnh quyền cho mọi thư mục với chown:

Ví dụ

sudo chown -R www-data:www-data /wp-content/plugins
sudo chown -R www-data:www-data /wp-content/themes

Chúc bạn lập trình vui vẻ ❤️!

Bài viết này đã giúp ích cho bạn?

Bài viết mới

Advertisements