要求されたアクションを実行するには、wordpressがWebサーバーにアクセスする必要があります。FTPを入力してください


28

ファイルのアクセス権の変更«WordPress Codexをフォローしていますが、アップデートおよび/またはインストールpluginおよび/またはthemeスルーしようとするとwp-admin、次のようになります:

要求されたアクションを実行するには、WordPressがWebサーバーにアクセスする必要があります。FTP資格情報を入力して続行してください。資格情報を覚えていない場合は、Webホストに連絡する必要があります。

ファイルシステムレベルから:

# 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
$ 

FTP資格情報なしで要求されたアクション(installおよび/またはupdate)を実行できるようにしたいと思います。/wp-admin

どうやってやるの?


1
これはローカルホストインストールですか?その場合は、以下を参照してください。wordpress.stackexchange.com/questions/19649/...
グレッグ・マクマレン

1
ノー@GregMcMullen、これは、NOT localhostのインストール&あなたのコメントは、WordPressのディレクトリの再帰的に変更の所有権にであることが、リンクから「受け入れ」の答えnobodyに起因する私にとって、この作品ではないでしょう- httpdとして実行されますapache
アレクサス

@alexus現在、ファイルはroot.apacheによって所有されているようです。誰の代わりにapache.apacheを試しましたか?
ティムマローン

@TimMalone設定ファイル/ディレクトリapache.apacheまたはroot.apache任意の違い、限りすることはないだろうhttpdとして実行しapache、そしてapacheさんがuidの一部であり、apache gid私の許可がに設定されているためのグループ'、それは、すべて同じですg+w
アレクサス

@alexus OK、他に試してみてください-wp-config.php(codex.wordpress.org/…)でFS_METHODを 'direct'に設定します
Tim Malone

回答:


52

以下をwp-config.phpに追加します。

define( 'FS_METHOD', 'direct' );

どのように機能するか教えてください。



あなたがファイルシステムに悪い許可を持っていない限り、私のために働いた。ところで私はwp-config.phpの一番上に追加しました
-Toskan

この方法を使用する前に、Alexusがリンクされている投稿を必ず読んでください。この方法は間違いなく機能します(問題は解決しました)が、共有ホスティング環境や、これを行うことでセキュリティが危険にさらされる可能性のある環境では、この方法を絶対に使用しないでください。
ジェームズハウス

16

つまり、WordPressには、インストールされたフォルダーを変更するための制限された権限があります。

これを修正するために必要なことは、同じために必要な許可を与えることだけです。

SSH経由でサーバーに接続した後、ターミナル/ Putty /コマンドラインプロンプトで次のコマンドを実行します。

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

チェックアウトこの記事の完全な詳細については、を。


許可は問題あり
ません

3
chown:無効なユーザー: 'apache:apache'
numediaweb

1
Apacheは、さまざまな種類のLinuxで異なるユーザーになることができることを忘れないでください。したがって、Apacheのユーザーとグループは通常同じであるため、グループ<username>を試してエラーが発生するかどうかを確認できます。次に、正しいユーザーを使用します。Ubuntuで最も一般的なのは、Apacheファイルをchowningするための「www-data:www-data」または「www:www」です。
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内からプラグインのコードを更新することでこれを検証し、機能しました)。

注:コード全体を詳しく調べたわけではありません。これは、私の簡単な解釈にすぎません。同じ問題が発生し、httpdユーザーがファイル所有者でもあるようにuser:groupを切り替えると、FTP資格情報の入力が求められなくなりました。


うん、所有者をwww-data私のために変えた。面白いワードプレス!
ankush981

1

直接的な答えではありませんが、おそらく言わなければならない-これは、ローカル開発について話している場合を除き、解決を避けるべき問題の1つです。

その理由は、Webサーバーがコードを上書きできる場合、その上で実行されている悪意のあるコードも同様にそれを実行できるからです。このリスクは、ftp資格情報を入力する必要がないため、数秒の節約よりもはるかに大きいです。


0

質問は新しいものではありませんが、この問題についても2セントを追加したいと思います。

多くのPPLのVPSサーバーにはCentos(7)があり、次のコード行で問題を解決できます。

Imhoは、WordPressが希望どおりに仕事をするのを差し控えるSELinuxに関係しています。SELinuxが何であり、何をするのかを説明するために遠回りします。参考までに、導入は以下から始まります。

Security-Enhanced Linux(SELinux)は、カーネルに実装されている必須アクセス制御(MAC)セキュリティメカニズムです。

以下の3つのステップのみ:

  • 1ターミナルを開きます(またはSSH経由でサーバーにアクセスします)
  • 2次のコード行を追加します chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 2行目のコード行を追加 chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

サーバーからの再起動やデーモンの再起動は必要ありません。

私はそれがすべての人に役立つとは言いませんが、SELinuxを無効にしていない人にとっては、それは安心すべきです。

乾杯

注:独自のニーズに合わせて調整してください(WordPressへのパスを意味します)

編集:define("FS_METHOD", "direct");それが使用されている/使用されている行を削除することを忘れwp-config.phpないでください。これは、上記のコード行が必要に応じて実行される場合、絶対に手間がかかりません。


0

私の場合、GITからFTPモードに切り替えることでこれを解決しました。

これ以上の警告はありません。

おそらくそれは他の誰かにも役立つでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.