問題描述
在進行更新時如何阻止 WordPress 提示我輸入 FTP 資訊?
最佳解決方案
如果您編輯 wp-config.php 檔案,可以將這些 FTP 設定預載入為 WordPress 讀取的常量。請記住,在共享的主機上,您應該注意可能的安全隱患。有關詳細資訊,請參閱編輯 wp-config.php 。
您的設定將有所不同,但這些對我和我的託管設定都有效。我已經包括一些未使用的常量,字首:
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);
次佳解決方案
檢查您的檔案所有權。當 apache 執行的使用者可以寫入 wordpress 目錄時,整合的升級過程全部都沒有 ftp 。 FTP 憑證適用於 Web 伺服器對您的檔案沒有正確的許可權,然後 WordPress 提示您輸入您的 FTP 詳細資訊,並嘗試將其用於 FTP 到與之相同的伺服器,以便能夠寫入需要的檔案
第三種解決方案
看來,WordPress 不僅可以檢查目錄是否可寫,而且會檢查 Apache 使用者是否 OWNS 目錄 (或至少,如果 Apache 使用者擁有建立的臨時檔案) 。請觀察這些程式碼行在/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);
}
所以,一個快速的解決方案將是發出這個命令,並將整個 Wordpress 安裝的所有權歸給 Apache:
sudo chown -R www-data wordpress/
其中 www-data 是 Apache 使用者,當然 wordpress 是您的 WordPress 安裝資料夾。
我進一步記錄了我的解決方案:https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。