для выполнения запрошенного действия wordpress требуется доступ к вашему веб-серверу. пожалуйста, введите ваши ftp данные
Я следую инструкции Изменение прав доступа к файлам « WordPress Codex, но когда я пытаюсь обновить и/или установить plugin и/или theme через wp-admin, я получаю следующее:
Для выполнения запрошенного действия WordPress необходим доступ к вашему веб-серверу. Пожалуйста, введите ваши FTP данные для продолжения. Если вы не помните свои данные, вам следует обратиться к вашему хостинг-провайдеру.
на уровне файловой системы:
# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x. 6 root apache 4096 Jun 2 12:01 wp-content/
drwxrwxr-x. 28 root apache 4096 Jun 2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root apache 4096 May 11 16:34 wp-content/themes/
#
httpd работает под пользователем apache:
$ ps auxw | grep httpd
root 20158 0.0 0.1 533080 26192 ? Ss 15:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20233 0.0 0.2 612608 34908 ? S 15:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20234 0.0 0.2 538772 46904 ? S 15:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20235 0.0 0.1 536832 24268 ? S 15:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20236 0.0 0.2 626272 35640 ? S 15:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20237 0.0 0.0 535296 9592 ? S 15:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20322 0.0 0.1 537088 26620 ? S 15:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20380 0.0 0.2 626060 33816 ? S 15:04 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20429 0.0 0.1 538216 29184 ? S 15:04 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20447 0.0 0.2 629380 43180 ? S 15:04 0:00 /usr/sbin/httpd -DFOREGROUND
apache 20448 0.0 0.2 626172 35224 ? S 15:04 0:00 /usr/sbin/httpd -DFOREGROUND
alexus 24073 0.0 0.0 112652 972 pts/9 R+ 15:13 0:00 grep --color=auto httpd
$
Я хотел бы иметь возможность выполнять запрашиваемые действия (install и/или update) через /wp-admin без FTP данных.
Как я могу это сделать?
alexus
сработало у меня, если только у вас нет проблем с правами доступа в файловой системе. Кстати, я добавил это в самое начало файла wp-config.php
Toskan
Обязательно прочитайте пост, на который ссылается Alexus, перед использованием этого метода. Этот метод определенно работает (он решил проблему для меня), но вам точно не стоит использовать этот метод на shared-хостинге или в любой среде с рисками, где это может поставить безопасность под угрозу.
JamesHoux
после добавления этого я получаю следующую ошибку:
Update Failed: The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.
Shawn
Это потенциально опасно для пользователей, которые переносят свои сайты целиком с локального сервера на рабочий. Я бы предпочел, чтобы вы использовали метод @Syamraj K по изменению прав файлов или удалили это из вашего wp-config.php перед переносом в онлайн
Cedric Ipkiss
чувак!! ты мой герой. спасибо, что сэкономил мне кучу времени на этом
Jacky Supit
Если вы используете WP CLI, вы можете выполнить эту команду вместо этого: wp config set FS_METHOD direct. Это изменит файл wp-config.php
Flimm
Пожалуйста, объясните, что это делает, прежде чем многие бездумно вставят это в свой конфигурационный файл.
Altimus Prime
WP размещен на Google Cloud compute: Я добавил define( 'FS_METHOD', 'direct' ); в wp-config, затем установил права с помощью sudo chown -R www-data:www-data /home/mysitenam/public_html/, обновил плагин и вернул права обратно с помощью sudo chown -R mysitename:mysitename /home/mysitename/public_html/
Patrik Rikama-Hinnenberg
Это означает, что у WordPress ограниченные права для внесения изменений в папку, в которую он был установлен.
Для исправления этой ситуации вам необходимо предоставить соответствующие разрешения.
Выполните следующую команду в терминале / Putty / командной строке после подключения к серверу через SSH:
sudo chown -R apache:apache /var/www/html
Помни, что Apache может работать под разными пользователями в разных дистрибутивах Linux. Поэтому ты можешь попробовать команду groups <username> и посмотреть, выдаст ли она ошибку, так как пользователь и группа для Apache обычно одинаковы. Затем используй правильного пользователя. Наиболее распространенные варианты в Ubuntu - это "www-data:www-data" или "www:www" для chown файлов Apache.
MontyThreeCard
После того как я смог найти правильное имя пользователя, это сработало отлично (см. также команду для вывода списка всех пользователей)
Top-Master
Если вы хотите использовать это на OSX, используйте _www:_www (Mojave, не знаю, что будет в других версиях)
Larzan
Это более правильный ответ. Ответ с большим количеством голосов опасен для многих неопытных пользователей, которые переносят целые каталоги сайтов с локального сервера на рабочий, даже при использовании плагинов WordPress
Cedric Ipkiss
Хотя совершенно правильно иметь владельца как root:apache с правами 775, и httpd, работающий под пользователем apache, WordPress это не нравится. Он хочет, чтобы владельцем был apache, согласно wp-admin/includes/file.php:
// Попытка определить владельца файлов WordPress и вновь создаваемых файлов
$wp_file_owner = $temp_file_owner = false;
if ( function_exists('fileowner') ) {
$wp_file_owner = @fileowner( __FILE__ );
$temp_file_owner = @fileowner( $temp_file_name );
}
В вашем случае будет:
wp_file_owner = root
temp_file_owner = apache
if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
// WordPress создает файлы с тем же владельцем, что и файлы WordPress,
// это означает, что можно безопасно изменять и создавать новые файлы через PHP.
$method = 'direct';
$GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
// Директория $context доступна для записи, и $allow_relaxed_file_ownership установлен, это означает, что мы можем безопасно изменять файлы
// в этой директории. Этот режим не создает новые файлы, а только изменяет существующие.
$method = 'direct';
$GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}
Если $wp_file_owner совпадает с $temp_file_owner, то процесс продолжается. В вашем случае сработает elseif, который, согласно комментарию, не разрешает удаление/создание, а только обновление (я проверил это, обновив код плагина из WordPress, и это сработало).
Примечание: я не углублялся в код, это лишь моя быстрая интерпретация. У меня была такая же проблема, и как только я изменил пользователя:группу так, чтобы пользователь httpd также был владельцем файлов, запрос учетных данных FTP прекратился.
Да, смена владельца на www-data сработала у меня. Забавный WordPress!
ankush981
На всякий случай, если у кого-то такая же проблема - это сработало только после того, как я изменил владельца ВСЕХ файлов/директорий WordPress на пользователя веб-сервера. Просто смена владельца для директории wp-content и всех её поддиректорий не решила проблему. Пришлось рекурсивно изменить владельца для корневой директории WordPress и всех вложенных файлов, чтобы это заработало.
Ambulare
Это не прямой ответ, но, вероятно, стоит сказать - это одна из проблем, которую вам следует избегать решать, если только речь не идет о локальной разработке, в этом случае вы можете просто установить разрешения 777.
Причина в том, что если веб-сервер может перезаписывать ваш код, то любое вредоносное ПО, работающее на нем, также сможет это делать. Риск просто намного выше, чем удобство сохранения нескольких секунд за счет отсутствия необходимости вводить учетные данные FTP.
Хотя вопрос уже не новый, я хочу добавить свои два цента по этой проблеме.
Многие люди используют CentOS(7) на своих VPS-серверах, и следующие строки кода могут решить их проблему.
На мой взгляд, всё дело в SELinux, который мешает WordPress выполнять свою работу должным образом. Углубляться в объяснение, что такое SELinux и как он работает, не будем. Для справки, введение начинается с:
Security-Enhanced Linux (SELinux) — это механизм безопасности с обязательным контролем доступа (MAC), реализованный в ядре.
Только 3 шага для решения:
- 1 Откройте терминал (или подключитесь к серверу через SSH)
- 2 Добавьте следующую строку кода:
chcon -R -t httpd_sys_content_t /var/www/html/wordpress - 3 Добавьте вторую строку кода:
chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress
Перезагрузка сервера или перезапуск демонов не требуется.
Не могу сказать, что это поможет всем, но для тех, кто не отключал SELinux, это должно стать решением.
Удачи!
Примечание: Пожалуйста, адаптируйте под свои нужды (имеется в виду путь к WordPress)
редактирование: убедитесь, что удалили строку define("FS_METHOD", "direct");, если она использовалась в wp-config.php, потому что это абсолютно недопустимо, когда вышеуказанные строки кода выполняют свою работу.
Это то же самое, что и существующий ответ с наибольшим количеством голосов, за исключением комментариев. Разве это действительно важно?
Rup