it-swarm-vi.tech

Làm cách nào tôi có thể ngăn WordPress nhắc tôi nhập thông tin FTP khi thực hiện cập nhật?

Làm cách nào tôi có thể ngăn WordPress nhắc tôi nhập thông tin FTP khi thực hiện cập nhật?

29
artlung

Nếu bạn chỉnh sửa tệp wp-config.php, bạn có thể tải trước các cài đặt FTP này dưới dạng hằng số được đọc bởi WordPress. Hãy ghi nhớ, trên một Máy chủ lưu trữ được chia sẻ, bạn nên chú ý đến các tác động bảo mật có thể có. Xem Chỉnh sửawp-config.php để biết thêm thông tin.

Cài đặt của bạn sẽ khác nhau, nhưng các cài đặt này hoạt động cho tôi và thiết lập lưu trữ của tôi. Tôi đã bao gồm một số hằng số chưa sử dụng, có tiền tố:

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');
// define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
// define('FTP_PRIKEY', '/home/username/.ssh/id_rsa');
define('FTP_USER', 'my-ftp-username');
define('FTP_PASS', 'my-ftp-password');
define('FTP_Host', 'ftp.my-site.example.com');
// define('FTP_SSL', false);
23
artlung

Kiểm tra quyền sở hữu tập tin của bạn. Khi người dùng mà Apache chạy như có thể ghi vào các thư mục wordpress, thì tất cả quá trình nâng cấp tích hợp chỉ hoạt động mà không có ftp. Thông tin đăng nhập FTP dành cho nếu máy chủ web không có quyền riêng tư trên các tệp của bạn, sau đó wordpress sẽ nhắc bạn về các chi tiết FTP của bạn và cố gắng sử dụng chúng để FTP trở lại cùng một máy chủ để có thể ghi tập tin nó cần.

12
pixeline

Dường như WordPress không chỉ kiểm tra xem các thư mục có thể ghi được hay không mà còn kiểm tra xem người dùng ApacheCÓ SỞ HỮUcác thư mục (hoặc ít nhất, nếu người dùng Apache sở hữu tệp tạm thời mà nó tạo). Quan sát các dòng mã này tại /wp-admin/includes/file.php: get_filesystem_method ():

if ( $temp_handle ) {
    if ( getmyuid() == @fileowner($temp_file_name) )
        $method = 'direct';
    @fclose($temp_handle);
    @unlink($temp_file_name);
}

Vì vậy, một giải pháp nhanh chóng sẽ là ban hành lệnh này và trao quyền sở hữu toàn bộ cài đặt Wordpress cho Apache:

Sudo chown -R www-data wordpress/

Trong đó dữ liệu www là người dùng Apache và dĩ nhiên wordpress là thư mục cài đặt WordPress của bạn.

Tôi đã ghi lại thêm giải pháp của mình tại đây: https://ardeearam.wordpress.com/2013/02/03/solve-wordpress-asking-for-ftp-credentials-when-upgrad/

5
Ardee Aram

Khi tinh chỉnh Apache 2.4 thông qua EasyApache4 để cải thiện tốc độ tải trang web trong máy chủ Centos 7 PHP 7, tôi đã kích hoạt mod_pagespeed. Khi bật nó, nó sẽ tự động vô hiệu hóa mod_ruid2 và mod_cgi (và kích hoạt hai mô-đun khác). Khi tắt mod_pagespeed, nó sẽ không tự động bật lại mod_ruid2 - nó sẽ chỉ bật lại mod_cgi. Nếu không có mod_ruid2 Wordpress sẽ yêu cầu thông tin đăng nhập FTP.

Không cần mã cứng wp-config.php hoặc đặt quyền truy cập tệp (nguy hiểm) thành 777. Chỉ cần bật mod_ruid2 theo cách thủ công, khởi động lại Apache và vấn đề cấp phép FTP/tệp được giải quyết. Wordpress và plugin bây giờ có thể được cập nhật như bình thường và phương tiện được tải lên thư viện Wordpress. Nó hoạt động ngay lập tức.

Tôi vừa kiểm tra rằng khi thay đổi từ MPM Prefork thành Worker, nó sẽ vô hiệu hóa mod_ruid2. Khi hoàn nguyên từ Worker sang Prefork, nó sẽ không kích hoạt mod_ruid2, gây ra sự cố được mô tả trong bài viết này.

Trong cả hai trường hợp, chìa khóa là kiểm tra và kích hoạt mod_ruid2.

Hy vọng sẽ giúp được.

1
itmonitor