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

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:


23

Nếu bạn chỉnh sửa wp-config.phptệ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);

Đây là cách đơn giản nhất, nhưng như pixeline nói dưới đây, hãy kiểm tra quyền truy cập tệp. Hai trong số ba thông tin được lưu trữ trong cơ sở dữ liệu, nhưng thông tin thứ ba được ghi vào một tệp (tôi không thể nhớ nó nằm ở đâu trên đỉnh đầu của tôi).
John P Bloch

12

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.


1
Bạn thực sự không nên sửa đổi quyền sở hữu tệp đối với máy chủ web, vì đây là một rủi ro bảo mật tiềm ẩn.
Otto

... trừ khi nó được thiết lập tồi, như trong trường hợp của tôi :)
pixeline

5

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/


Liên kết đó đã chết bây giờ. Đây là một kho lưu trữ: web.archive.org/web/20131213005955/http://rubiks.ph/ Kẻ
Sam Wilson

Bất cứ ai cũng có thể giải thích chi tiết về: "$ allow_relaxed_file_ownership Tùy chọn. Có cho phép Nhóm / Thế giới có thể ghi được không."
Sam Wilson

@Sam Wilson Bây giờ tôi đã di chuyển một số mục blog của mình sang tài khoản WordPress miễn phí. Miền cũ đã chết.
Ardee Aram

1

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

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.


Chào mừng bạn đến với WPSE, th3penguinwhisperer. Xin vui lòng đi tham quan . Trả lời 'câu trả lời ở trên', câu trả lời có thể thay đổi thứ tự bất cứ lúc nào do kết quả bình chọn của mọi người. Rất thích bạn chỉnh sửa bài đăng của mình để chỉ định câu trả lời mà bạn đang đề cập để nó rõ ràng. Cảm ơn đã thêm suy nghĩ của bạn!
Tim Malone
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.