問題描述
在進行更新時如何阻止 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。