Apache2仮想ホストでは、RModestatを使用してmod_ruid2を希望どおりに機能させています。プロセスをWebサイトフォルダーにchrootするためにRDocumentChRootを追加しましたが、PHPがMySQLデータベースに接続できないという望ましくない副作用があります。私は助けを求めてグーグルで検索しましたが、何も見つかりませんでした。
誰かが私にロープを投げることができますか?
「mysqlsocketthingy」について言及してくれたマリオに感謝します。いくつか検索したところ、MySQLDが接続を受信するためのオプションの方法としてmysqld.sockというファイルを使用していることがわかりました。システムで「locate*.sock」を実行すると、.sockファイルが表示されます。dkim-filterも.sockファイルを使用します。私が読んだ別のWebサイトによると、ソケットファイルはアプリケーションによって作成されたFIFOファイルであり、他のソケット構成を経由せずにアプリケーションが相互に通信できるようにするためのリダイレクトパイプとして機能するだけです。
私が尋ねた場合、chrootされたphpプロセスは、chrootの外部にあるため、.sockファイルにアクセスできません。幸い、PHPは接続変数のために.sockファイルを使用していると推測しました。WordPressでは、デフォルト設定は「localhost」を使用します。PHPで「localhost」を指定すると、PHPはネットワーク接続を行う代わりに.sockファイルを検索します。「localhost」を「127.0.0.1」に変更すると、問題が適切に修正されました。ハードリンクやその他の回避策は必要ありませんでした。
このPHPのバグに、役立つと思われるコメントを追加しました。
PHPソースを読んでいる限り、実行時から動作を変更することはできません。TCPを介して機能するように、ソースを変更する必要があります。
誰かが私が間違っていると思う場合は、実行時の構成からこの動作をバイパスする方法を教えてください:D