私はこれが重複しているとは思わない、私はここで同様の質問を見たが。
私のプライマリSSH/FTPユーザーとユーザーnobody
をwebserver
と呼ばれるグループに追加しました、それから私はchown -R .webserver /var/www
を実行しました。その結果、FTPとApacheの両方がファイルシステムに書き込めるようになりました。
PHPはサーバーに書き込むことができます - メディアライブラリを使用して画像をアップロードできます。しかし、プラグインをインストールしようとすると、FTP認証情報の入力を求められます。
Wp-config.phpにdefine('FS_METHOD', 'direct');
を追加すると、これはなくなり、プラグインは問題なくインストールされます。
なぜこれが起こるのでしょうか。 Codexによると、推奨される方法は直接的であり、ファイルシステムを直接操作するにはableです。それでは、FTPでプロンプトを表示させるのはどういうことでしょうか。
ありがとうございます。
編集:
どのファイルシステムメソッドを使用するかをソースで調べたところ(wp-admin/includes/file.php
、行933)、テストファイルを作成できることがわかりましたが、所有者がプロセッサのUIDと一致しません。 getmyuid()
とfileowner($file)
のPHPマニュアルを見ると、getmyuid()
を使う代わりにshouldがposix_getuid()
を使っているようです。開発者が前者を使用する理由は何ですか?
編集2:
WordPressのバグトラッカーに注目: https://core.trac.wordpress.org/ticket/10205
Posix はPHPコアの一部ではなくPHP拡張子です。 WordPressは、そのコアでできる限りエクステンションの使用を最小限にしようとします。 Posixの1つの特定のケースでは - それは全くWindowsプラットフォームで利用できないという非常に注目すべき欠陥を持っています。