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?
Câu trả lời:
Nếu bạn chỉnh sửa wp-config.php
tệp của mình, 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ủ được chia sẻ, bạn nên chú ý đến những tác động bảo mật có thể xảy ra.
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);
Kiểm tra quyền sở hữu tập tin của bạn. Khi người dùng apache chạy như có thể ghi vào 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 là 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 các thông tin đó để FTP trở lại cùng một máy chủ để có thể ghi tập tin nó cần.
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 Apache có SỞ HỮU các thư mục không (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 ra). 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/
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 kích hoạt lại mod_ruid2 một cách tự động - nó sẽ chỉ kích hoạ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) Tôi không thể đồng ý với câu trả lời ở trên vì nó quá chung chung
1a) Tôi chỉ không muốn thay đổi quyền sở hữu tất cả các tệp của mình theo cách đệ quy (như sử dụng súng săn để giết một con muỗi). Đặc biệt là công việc này hoàn hảo trước đây.
1b) Wordpress có tính năng "lén lút" bất ngờ hỏi bạn về thông tin đăng nhập cho ftp
2) Vì vậy, tôi bắt đầu đào sâu hơn bằng cách sử dụng sự dẫn dắt của Ardee Aram. Tôi đã kiểm tra tệp file.php và kiểm tra quyền sở hữu của nó. Có vẻ như file.php phụ thuộc vào quyền sở hữu của chính nó (được đặt không chính xác là root).
Khắc phục: chown www file.php
LƯU Ý: Thay thế www bằng bất kỳ bản phân phối hoặc cài đặt nào của bạn (bạn có thể sử dụng ps aux | egrep "php | http" và xem quyền sở hữu của nó là gì trong cột đầu tiên.
Tôi hy vọng điều này sẽ giúp người khác khỏi thất vọng về điều này. Tôi thậm chí không hiểu tại sao wordpress không "phàn nàn" ngay từ đầu và sau đó đề xuất sử dụng thay thế FTP. Bây giờ nó giống như một "tính năng" mà tất cả bất ngờ được giới thiệu.