web-dev-qa-db-ja.com

マルチサイトに画像をアップロードするとHTTPエラーが発生する

私の状況であなたを埋めるためだけに。

WordPressマルチサイト版を実行する:3.5.2クリーンインストール。

ゼロサードパーティ製プラグイン。私のプラグインはすべてデバッグが無効になっています。

WordPress MUドメインマッピングを使用する ネットワーク内の複数の異なるTLD用。

既存のライブネットワークではなく、ローカルサーバーからファイルを提供するために、すべてのネットワークURLも偽装しました。

ホストファイル:vi /etc/hosts/

のようなものが含まれているかもしれません:

127.0.0.1 domain-a.com
127.0.0.1 www.domain-a.com
127.0.0.1 domain-b.com
127.0.0.1 www.domain-b.com

ネットワーク内の各サイトについて....

私はそれをしました、それで私はサイトURLとあなたが何を持っているかを変える必要はありません。


各ネットワークサイトのすべてが意図したとおりに機能します。唯一の問題はメディア添付ファイルのアップロードです。何らかの理由で、彼らは正しくアップロードされていません。ユーザーは本格的な管理者ユーザーロールであるため、権限関連にすることはできません。

私は現在Ubuntu 12.04 with PHP 5.4.6(FAST-CGI)を実行しています。

画像をアップロードするときに、WordPressから非常に一般的なエラーが発生します。

Error 40 Year Old … to Life.jpg HTTP error.

Error 40 Year Old … to Life.jpg HTTP error.

PHPをFAST-CGIからMOD-PHPに切り替えた後、WordPressからもう少し具体的な応答を受け取りました。

Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.

Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.

ディレクトリ./wp-content/uploads/sites/3/2013/をチェックアウトしましたが、自動的に作成される/07/はありません。それで私は手動でそれを作成してFAST-CGIMOD-PHPの両方から再度アップロードしようとしました、それでも同じエラーが続きます。

ネットワーク管理ダッシュボードの./wp-admin/network/site-settings.php?id=3でメディア関連のオプションを探しています。

Uploads Use Yearmonth Folders => true
Upload Path => '' //blank
Upload Url Path => '' //blank

私は他のマルチサイトインストールと共にライブマルチサイトネットワークをチェックしました、そして、それらは同じ設定を持っているようです。

それから私はそれが.htaccess関連であるかもしれないと考え始めました。

Network Admin -> Settings -> Network Setupに行くと

それは私に使うように言う:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Www以外のURLをwwwのURLにリダイレクトできるようにするための、最初のわずかな変更(RewriteEngine Onの直後)を除いて、これは私が使用しているものです。

例:

# DOMAIN-A Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-a.com
RewriteRule ^(.*)$ http://www.domain-a.com/$1 [R=301,L]

# DOMAIN-B Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-b.com
RewriteRule ^(.*)$ http://www.domain-b.com/$1 [R=301,L]

ただし、これらの規則は WordPress Codexの説明と同じではありません 。私はまだ私のWordPressマルチサイトネットワーク内での画像アップロードがうまくいっていない状態で、WordPressコーデックスに従って推奨事項を試してみました。

私は現在SUBDOMAIN_INSTALLをtrueに設定しており、WordPress Codexに従って適切な書き換え規則を使用しています。また、SUBDOMAIN_INSTALLをfalseに設定してみました。適切な書き換え規則を使用しました。どちらも問題を修正していません。

ライブネットワーク(バージョン:3.5.2)のインストールでも画像のアップロードができなくなりました。

何がこの問題を引き起こしているのかを知るのに十分なマルチサイトの経験がありません。他の誰かがこの問題を解決する方法を考えない限り、私はこれを調査し続けます、あなたの習得した知識を共有してください!

100%メモリ問題ではないことに注意してください。 1kbの画像ファイルもアップロードされません。

画像をアップロードするときにHTTPエラーを修正する方法に記載されているようにすべての可能な解決策を試してみました。 それでもまだうまくいかない。

マルチファイルアップローダの代わりにDashboard -> Media -> Add New -> browser uploaderを使用すると、Internal Serverエラーが発生します。

なんらかの理由で、私はこの1つのランダムな特定の画像を何の問題もなく何度も何度もアップロードすることができますが、アップロードしようとする他の画像は失敗します... 1kbサイズの画像でさえ.

media uploader success

他の画像はアップロードできません。いくつかの画像アップロードは内部サーバーエラーを投げます、そして、いくつかは投げません。 1kbでも5MBでもいいでしょう。絶対に不可解です。

3
Michael Ecklund

chat に有用なアドバイスを寄せてくれた @s1lv3r@GhostToast に感謝します。

私の 元の質問 で述べたように、私はFAST-CGIMOD-PHPの両方をテストしましたが、どちらも同じエラーを再現し続けていたと述べました。

チャットで述べたように 私はUbuntu 12.04とCentOS 5.9の専用サーバーの両方でテストしました。

チャットメッセージ by @s1lv3r は、最終的にはPHP-FPMをテストするというアイデアを生み出したものです...そしてそれを見ていただけますか? PHP-FPMは謎を解決しました!

Ubuntu 12.04とCentOS 5.9の両方で、プラグインを無効にした状態、プラグインを有効にした状態、ストックテーマを有効にした状態、およびカスタムテーマを有効にした状態で何度もテストしました。それは間違いなくすべての画像を、大小にかかわらずアップロードしました - 間違いなく。

それではまたもやあなたはそれを早く捕まえませんでした。あなたがあなたのWordPressマルチサイトで同様の症状を経験しているならば。あなたのサーバーでPHP-FPMを有効にしてみてください。あるいは chat by @s1lv3rFAST-CGIを使っているならアップロードディレクトリをchmoddingしてみてください。

PHP-FPMを有効にすると、WordPressマルチサイトで画像のアップロード時にHTTPエラーが発生するというこの特定の問題が解決されました。


BoF EDIT 10/20/2016

WordPress MultisiteでHTTPエラーが発生する場合は、インストールの設定方法を検討してください。

WordPress Multisiteには2つのオプションがあります。

  1. サブディレクトリのインストール
  2. サブドメインのインストール

私は、 "サブディレクトリ"インストールでTLDを使用しているサイトのネットワークをすべて管理してきました。彼らは永遠にうまく働いた。突然、彼らは "HTTPエラー"でファイルのアップロード中に失敗し始めました。

問題はWordPressでのみ発生し、問題はHTTPです。そのため、WordPressとApacheの両方が信頼しているものがあります。唯一の一般的なリンクは.htaccessです。

WordPress Codex :: .htaccessとMod Rewriteを見れば 書き換え規則はMultisite用に設定したインストールの種類によって実際にはかなり異なります。

"サブディレクトリ"インストールの書き換え規則を "サブドメイン"インストールの書き換え規則に置き換えました。私はそれからまたdefine('SUBDOMAIN_INSTALL', false);をこのdefine('SUBDOMAIN_INSTALL', true);に変えるためにwp-config.phpを更新しました

ブーム!問題が解決しました。ネットワーク内の各サイトのTLDを使用してWordPressマルチサイトでファイルをアップロードする際のHTTPエラーが発生しなくなりました。

EoF EDIT 10/20/2016


1
Michael Ecklund