2013-07-29 101 views

回答

204

嘗試添加代碼的wp-config.php文件:

define('FS_METHOD', 'direct'); 
+16

我一直在搜索這個答案,所以我在這裏爲我自己和其他人發帖: 該代碼位於wp-admin/includes/file.php:get_filesystem_method。Wordpress嘗試創建一個文件'wp-content/temp-write-test - '。time()。如果失敗,它假定您只能使用FTP。但是這可能不是真的,如果wp-content本身不可寫,但是例如wp-content/plugins是。然後,強制FS_METHOD工作。 –

+3

它的工作原理,但現在的問題是解壓後的錯誤說:「無法創建目錄」。 – Drew

+1

這對我有幫助,但僅僅是因爲它暴露了更多有關失敗的信息。核心問題是對正在進行更新的用戶帳戶擁有寫入權限。對於每種類型的系統,這可以是不同的。 (注意下面的一些答案告訴你爲守護進程,httpd或apache設置寫入權限......)它幫助我從下面的註釋中看到PHP代碼片段(<?php echo(exec(「whoami」)); ?>),以便我可以告訴用戶正在運行更新。在這裏提出的修改似乎只是簡單地抑制了FTP憑據的挑戰,所以我可以看到錯誤消息。 – agentv

7

From the first hit on Google

WordPress的詢問你的FTP憑據時它不能直接訪問這些文件 。這通常是由PHP作爲apache用戶 (mod_php或CGI)運行引起的,而不是擁有WordPress文件的用戶。

這在大多數共享託管環境中,而正常 - 文件被存儲爲用戶,並運行Apache用戶apachehttpd。這實際上是一種很好的安全預防措施,因此利用和黑客無法修改託管文件。你可以通過將所有WP文件設置爲777安全來避開這種情況,但這意味着沒有安全性,所以我會強烈反對這一點。只需使用FTP,這是自動建議的解決方法,有很好的理由。

+0

感謝您的解釋。有沒有辦法將共享服務器配置爲以正確的用戶身份運行PHP或修復所有者或其他解決方案? –

10

在OSX,我用下面的,和它的工作:

sudo chown -R _www:_www {path to wordpress folder} 

_www是執行PHP的用戶在Mac上。 (你也可能需要chmod一些文件夾,我之前做過,但沒有解決它,直到我做了chown命令才工作,所以我不確定它是否可以是單獨的chown命令,或chmod和chown的組合。)

1

正如Niels所述,發生這種情況是因爲服務器進程用戶無法寫入Wordpress文件夾。

但這裏有很多文章無法解釋的東西。它是php進程的所有者,而不是nginx進程。如果您嘗試更改nginx所有者,它不會解決此問題。

要解決此問題,請嘗試運行ps aux以查看哪個用戶擁有php-fpm進程。然後檢查該用戶是與wordpress文件夾的所有者相同的用戶,還是至少可以寫入該用戶。如果用戶無法寫入,則需要更改文件夾的權限和/或所有權;或者將兩個用戶(服務器所有者和wordpress文件夾所有者)放在可以寫入該文件夾的公共組中;或將php.ini「user」屬性更改爲可寫入該文件夾的用戶。

18

如果您使用的是Ubuntu。

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER 
+3

-1不好的想法做到這一點,只有wp-content應該歸屬於'www-data'請看這裏:http://codex.wordpress.org/Hardening_WordPress或在這裏:http://stackoverflow.com/questions/18352682/correct-file-permissions-for-wordpress – timhc22

+0

此答案還修復了錯誤「安裝失敗:無法找到WordPress內容目錄(wp-content)」。試圖從儀表板安裝插件時。 – WindChimes

10

「每當你使用WordPress的控制面板設置爲自動安裝,升級或刪除插件,WordPress的必須在文件系統中文件的更改。

進行任何更改之前,WordPress的首先檢查是否或者沒有權限直接操縱文件系統

如果WordPress沒有直接修改文件系統的必要權限,系統會要求您提供FTP憑據,以便WordPress可以嘗試通過FTP完成所需操作。「

解決方案: 爲了找出你的Apache實例運行哪些用戶如,創建具有以下內容的測試腳本:

<?php echo(exec("whoami")); ?> 

對於我來說,這是守護進程,而不是www數據然後,通過固定的權限:

sudo chown -R daemon /path/to/your/local/www/folder 
+3

不要忘記禁用exec()或類似的敏感功能。在生產中。 – Arda

+1

更好的是使用'<?php echo(exec(「id」)); ?>'這甚至會提供超出用戶ID的組數據:'uid = 5018(web27)gid = 5012(client7)groups = 5012(client7),5002(sshusers)' –

2

第一位置移動到安裝文件夾(例如)

cd /Applications/XAMPP/xamppfiles/ 

現在,我們要修改您的htdocs目錄:

sudo chown -R daemon htdocs 

輸入根口令提示時,然後在chmod調用完成它:

sudo chmod -R g+w htdocs 
8

我改變了WordPress的所有權文件夾到www數據遞歸併重新啓動apache。

sudo chown -R www-data:www-data <folderpath> 

它像一個魅力工作!

+0

這對大多數人來說可能是正確的答案。我認爲這是我第三次創建了一個文件夾並被忘記了。 – MrMysterious2502

1

來解決這個問題最簡單的方法是添加下面的FTP信息到您的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/'); 

FTP_BASE是「基地」的完整路徑WordPress安裝 FTP_CONTENT_DIR的(ABSPATH)文件夾是WordPress安裝的wp-content文件夾的完整路徑。 FTP_PLUGIN_DIR是WordPress安裝的插件文件夾的完整路徑。

+0

FTP不安全,因此我們禁用它,所以它不是一個解決方案。我們使用SFTP來代替。 –

2

我們遇到了同樣的問題,作爲更大問題的一部分。的

define('FS_METHOD', 'direct'); 

建議的解決方案隱藏了窗口,但隨後我們仍然有與裝載主題和升級等,這是涉及到權限問題然而,在我們的例子中,我們從PHP操作系統廠商mod_php的移動到固定的問題更安全的php操作系統供應商FastCGI應用程序

1

我沒有在Ubuntu 14.04以下列出here和運行簡單的步驟的WordPress的本地安裝:

sudo chown -R www-data:www-data {path_to_your_project_directory} 

解決了我的問題與下載插件。我離開這篇文章的唯一原因是因爲當我搜索我的問題時,這是第一個結果,它使我找到了解決問題的方法。

希望這對任何人都有幫助!