Wordpress запрашивает мои учетные данные FTP для установки плагинов

69

Я установил блог Wordpress в свою локальную систему. Но когда я пытаюсь добавить плагины из admin, он запрашивает доступ к FTP. Что мне нужно настроить для Wordpress для загрузки без FTP?

Теги:
ftp

10 ответов

181
Лучший ответ

Попробуйте добавить код в wp-config.php:

define('FS_METHOD', 'direct');
  • 22
    Я продолжаю натыкаться на этот ответ, пока гуглю, поэтому выкладываю здесь заметку для себя и других: код находится в wp-admin / includes / file.php: get_filesystem_method. Wordpress пытается создать файл «wp-content / temp-write-test -». Time (). Если это не удается, предполагается, что вы можете использовать только FTP. Но это может быть не так, если сам wp-контент недоступен для записи, но, например, wp-content / plugins есть. Затем форсирование FS_METHOD работает.
  • 3
    это работает, но проблема сейчас в том, что после распаковки пакета появляется сообщение об ошибке: «Не удалось создать каталог».
Показать ещё 7 комментариев
16

Если вы используете Ubuntu.

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
  • 5
    -1 плохая идея для этого, только wp-контент должен принадлежать www-data см. Здесь: codex.wordpress.org/Hardening_WordPress или здесь: stackoverflow.com/questions/18352682/…
  • 0
    В этом ответе также исправлена ошибка «Ошибка установки: невозможно найти каталог содержимого WordPress (wp-content)». при попытке установить плагин с панели инструментов.
9

"Всякий раз, когда вы используете панель управления WordPress для автоматической установки, обновления или удаления плагинов, WordPress должен вносить изменения в файлы в файловой системе.

Прежде чем вносить какие-либо изменения, WordPress сначала проверяет, имеет ли он доступ к прямой обработке файловой системы.

Если WordPress не имеет необходимых прав для непосредственного изменения файловой системы, вам будут предложены учетные данные FTP, чтобы WordPress мог попытаться выполнить все, что нужно, с помощью FTP.

Решение: Чтобы узнать, какой пользователь использует ваш экземпляр apache, создайте тест script со следующим содержимым:

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

Для меня это был демон, а не www-data. Затем исправьте разрешение:

sudo chown -R daemon /path/to/your/local/www/folder
  • 3
    Не забудьте отключить exec () или подобные чувствительные функции. в производстве.
  • 2
    Еще лучше использовать <?php echo(exec("id")); ?> которая даже предоставит вам групповые данные за пределами идентификатора пользователя: uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
9

В OSX я использовал следующее, и он работал:

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

_www - пользователь, которому PHP работает под Mac.

(Возможно, вам также понадобится chmod для некоторых папок. Я сделал это первым, и он не исправил его. Только когда я сделал команду chown, это сработало, поэтому я не уверен, команда chown или комбинация chmod и chown.)

8

Я изменил права собственности на папку wordpress на www-данные рекурсивно и перезапустил apache.

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

Он работал как шарм!

  • 0
    Это правильный ответ для большинства людей, вероятно. Я думаю, что это третий раз, когда я создал папку и забыл, чтобы chown.
6

С первого удара в Google:

WordPress запрашивает ваши учетные данные FTP, когда он не может получить доступ к файлам непосредственно. Обычно это вызвано тем, что PHP работает как пользователь apache (mod_php или CGI), а не пользователь, который владеет вашими файлами WordPress.

Это довольно нормально в большинстве общедоступных хостинговых сред - файлы хранятся как пользователь, а Apache работает как пользователь apache или httpd. Это на самом деле хорошая защита безопасности, поэтому эксплойты и хаки не могут изменять размещенные файлы. Вы можете обойти это, установив все файлы WP на безопасность 777, но это означает нет, поэтому я бы очень советовал вам. Просто используйте FTP, это автоматически посоветовал обходное решение с полным основанием.

  • 0
    Спасибо за объяснение. Есть ли способ настроить общий сервер для запуска PHP в качестве правильного пользователя или исправить владельца или другое решение?
2

Сначала перейдите в папку установки (например)

cd /Applications/XAMPP/xamppfiles/

Теперь нужно было изменить каталог htdocs:

sudo chown -R daemon htdocs

Введите пароль root при появлении запроса, затем завершите его вызовом chmod:

sudo chmod -R g+w htdocs
1

У нас была та же проблема, что и в случае большей проблемы. Предлагаемое решение

define('FS_METHOD', 'direct');

скрывает это окно, но тогда у нас все еще были проблемы с загрузкой тем и обновлений и т.д. Это связано с разрешениями, однако в нашем случае мы исправили проблему, перейдя от поставщика PHP mod_php к более безопасному поставщик PHP-приложений FastCGI.

1

Как упоминалось в Niels, это происходит потому, что пользователь процесса сервера не может писать в папку Wordpress.

Но вот что много статей не объясняет. Это владелец процесса php, а не процесс nginx. Если вы попытаетесь изменить владельца nginx, он не решит этого.

Чтобы решить эту проблему, попробуйте запустить ps aux, чтобы узнать, кому принадлежит процесс php-fpm. Затем проверьте, что пользователь является тем же пользователем, что и владелец папки wordpress, или может, по крайней мере, написать ему. Если пользователь не может писать на него, вам нужно будет изменить разрешения и/или право собственности на папку; или поместить двух пользователей (владельца сервера и владельца папки Wordpress) в общую группу, которая может писать в папку; или изменить свойство пользователя "php.ini" пользователю, который может писать в папку.

0

Самый простой способ решить эту проблему - добавить в свой wp-config.php

следующую информацию о FTP:
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 - это полный путь к папке "base" (ABSPATH) установки WordPress FTP_CONTENT_DIR - это полный путь к папке wp-содержимого установки WordPress. FTP_PLUGIN_DIR - это полный путь к папке плагинов установки WordPress.

  • 0
    FTP не является безопасным, и поэтому мы отключаем его, поэтому это не решение. Вместо этого мы используем SFTP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню