для виконання запитуваної дії wordpress потребує доступу до вашого веб-сервера. будь ласка, введіть свій ftp


28

Я слідкую за зміною дозволу на файли «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-облікових даних.

Як я можу це зробити?


1
Це локальний хост? Якщо так, дивіться: wordpress.stackexchange.com/questions/19649/…
Грег Мак-Маллен

1
@GregMcMullen ні, це НЕ локальна установка і "прийнята" відповідь за посиланням, яке ви коментуєте, - це рекурсивна зміна права власності на каталог Wordpress на nobody- це не працюватиме для мене через httpdзапуски як apache.
alexus

@alexus Схоже, на даний момент ваші файли належать root.apache. Ви спробували apache.apache замість нікого?
Тім Малоун

@TimMalone настройка файли / директорії, apache.apacheабо root.apacheне буде ніякої різниці, до тих пір , як httpdпрацюють як apacheі apache«s uidє частиною apache gid» групи з, це все одно, тому що мої права встановлено g+w.
alexus

@alexus Гаразд, ще щось спробувати - встановіть FS_METHOD на "прямий" у wp-config.php ( codex.wordpress.org/… )
Тім Малоун

Відповіді:


52

Додати wp-config.php:

define( 'FS_METHOD', 'direct' );

Дайте мені знати, як це працює для вас.



працював на мене, якщо у вас погані дозволи у файловій системі. До речі, я додав його в самому верху wp-config.php
Тоскан,

Обов’язково прочитайте публікацію, до якої пов’язаний Алекс, перш ніж використовувати цей метод. Цей метод, безумовно, працює (він вирішив проблему для мене), але вам не слід використовувати цей метод у спільному хостинговому середовищі або в будь-якому середовищі ризику, де ви можете поставити під загрозу безпеку, зробивши це.
JamesHoux

16

Це означає, що WordPress має обмежений дозвіл на внесення змін у папку, в яку вона була встановлена.

Для того, щоб виправити це, все, що вам потрібно зробити, це надати необхідні дозволи на те саме.

Після підключення до Вашого сервера через SSH виконайте наступну команду у своєму терміналі / шпаклівці / командному рядку:

sudo chown -R apache:apache /var/www/html

Ознайомтеся з цією статтею, щоб отримати докладні відомості.


дозволи добре, перечитайте моє запитання)
alexus

3
chown: недійсний користувач: 'apache: apache'
numediaweb

2
Пам'ятайте, що Apache можуть бути різними користувачами в різних смаках Linux. Таким чином, ви можете спробувати групи <ім'я користувача> і побачити, помиляється чи ні, оскільки користувач і група для Apache зазвичай однакові. Потім скористайтеся правильним користувачем. Найпоширеніші в Ubuntu - це "www-data: www-data" або "www: www" для файлів Apache, які не вимагаються.
MontyThreeCard

2

Незважаючи на те, що цілком правильно мати право власності як root:apacheна дозволи 775, так і на httpd, як запускати apache, Wordpress цього не любить. Він хоче, щоб власник був apacheтаким wp-admin/includes/file.php:

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $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 is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

Якщо $ wp_file_owner збігається з $ temp_file_owner, тоді продовжуйте. Ваш би потрапив у elseif, який згідно з коментарем не дозволяє видалити / створити, а лише оновити (я перевірив це, оновивши код плагіна з Wordpress, і він спрацював).

Зауважте, я широко не переглядав код, це лише моя швидка інтерпретація. У мене була така ж проблема, і як тільки я переключився user: group, щоб користувач httpd був також власником файлу, він більше не вимагав отримання FTP-облікових даних.


Так, змінивши власника, щоб він www-dataпрацював на мене. Смішні WordPress!
ankush981

1

Не пряма відповідь, але, мабуть, слід сказати - це одна проблема, яку слід уникати вирішення, якщо ви не говорите про місцевий розвиток, і тоді ви можете просто встановити дозволи на 777.

Причина полягає в тому, що якщо веб-сервер зможе перезаписати ваш код, то будь-який шкідливий код, що працює на ньому, зможе це зробити і. Ризик просто набагато більший, ніж зручність економії декількох секунд, не потребуючи введення облікових даних ftp.


0

Хоча питання вже не таке нове, я хочу додати ще й два центи в цьому питанні.

Багато ppl мають Centos (7) на своєму VPS-сервері, і наступні рядки коду можуть вирішити їх проблему.

Imho має все спільне з SELinux, який утримує WordPress виконувати свою роботу, як хотілося. Подальше пояснюється, що таке SELinux і що він робить. FYI вступ починається з:

Linux-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оскільки це абсолютно не йде, коли вище кодових рядків виконувати так, як хотілося.


0

У моєму випадку я вирішив це, перейшовши з GIT назад у режим FTP.

Більше жодного попередження.

Можливо, і це допоможе комусь іншому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.