WordPressで画像がアップロードできない原因8つと対処法
WordPressで画像をアップロードしようとしたらエラーで止まる。iPhoneで撮った写真がそもそも読み込まれない。これ、地味に時間が溶けるトラブルです。
結論から書くと、原因はだいたい次の8つに収束します。エラーメッセージから当たりをつけて、上から潰していくのが早いです。
- iPhoneのHEIC(HEIF)形式が未対応
- ファイルサイズが
upload_max_filesizeを超えている - PHPの
memory_limit不足 wp-content/uploadsの書き込み権限が足りない- 画像最適化やセキュリティ系プラグインの競合
.htaccessやサーバーのWAFがブロックしている- アプリケーションパスワードの発行漏れ・権限不足
- Wi-Fiやモバイル回線が不安定で送信が途切れる
以下、エラーメッセージの読み方と、原因ごとの対処法を順に書きます。最後にiPhoneから写真を上げる用途で何度も詰まる人向けの、根本的に楽になる選択肢も置いておきます。
まずエラーメッセージを見る
WordPressのアップロード失敗は、表示されるメッセージで原因がかなり絞れます。
- 「HTTPエラー」 → サーバー側の処理がコケている。メモリ不足か権限の線が濃い
- 「ファイルサイズがこのサイトの上限を超えています」 →
upload_max_filesize超過 - 「このファイル形式はセキュリティ上の理由でアップロードできません」 → 拡張子が許可されていない(HEICが典型)
- 「ディレクトリを作成できませんでした」 →
wp-content/uploadsの書き込み権限なし - 画面が真っ白、何も出ない → JavaScriptエラーかプラグイン競合
出ているメッセージが上のどれに近いかを先に確認すると、無関係な対処に時間を使わずに済みます。
原因1: iPhoneのHEIC/HEIF形式に対応していない
iPhoneで撮った写真は、初期設定だとHEICで保存されます。WordPressはこの形式を標準では受け付けないので、ブラウザから上げようとすると「このファイル形式はアップロードできません」で弾かれます。
対処法(4つ、好きなものを選ぶ)
- iPhone側で形式を変える: 「設定 → カメラ → フォーマット」を「互換性優先」に。これ以降の撮影分はJPEGで保存されます。すでに撮影済みのHEICはそのまま残るので注意
- 撮影済み写真をJPEGに変換: Macに転送すると自動でJPEGに変わります。WindowsならCloudConvertなどのオンラインツール
- HEIC対応プラグインを入れる: 「WP HEIC Upload」などを入れるとWordPressがHEICを直接受け取れるようになります
- HEIC対応アプリで送る: SnapPressはHEICのまま読み込んで、送る時に自動でJPEGへ変換します。iPhone側の設定をいじらなくていい
HEIC関連の落とし穴をもう少し深く知りたい方は iPhoneのHEIC写真をWordPressに上げる時のハマりどころ を参照してください。
原因2: ファイルサイズが上限を超えている
PHPの upload_max_filesize と post_max_size を超えるファイルは通りません。共有レンタルサーバーの初期値は2〜8MBが多く、最近のスマホ写真(1枚5〜10MB)は普通に超えます。
対処法
- 今の上限を確認: 管理画面の「メディア → 新規追加」画面下に「最大アップロードファイルサイズ: XXMB」と書いてあります
- php.ini を編集:
upload_max_filesize = 32Mとpost_max_size = 32Mに。レンタルサーバーの管理画面から変えられることが多いです - .htaccess で上書き:
php_value upload_max_filesize 32Mとphp_value post_max_size 32Mを追記 - 事前に画像を圧縮: そもそもサーバー側を触れない時はこれが一番早い。SnapPressは送信前に3段階の画質から選んで自動圧縮してくれます
原因3: PHPのメモリ不足(memory_limit)
画像をアップロードする時、WordPressはサムネイルを複数サイズ自動生成します。元画像が4000px以上の高解像度だと、この処理だけでメモリを食い切って「HTTPエラー」で止まります。
対処法
wp-config.phpにdefine('WP_MEMORY_LIMIT', '256M');を追記- サーバーの php.ini の
memory_limitを256Mに - 事前に画像をリサイズして1枚あたりの負荷を下げる
根本対策はメモリ拡張です。が、共有サーバーで上限が決まっている場合は、画像側を軽くするしかありません。
原因4: wp-content/uploads のパーミッションエラー
画像は wp-content/uploads 配下に保存されます。このディレクトリの書き込み権限がないと「ディレクトリを作成できませんでした」で止まります。サーバー移転直後やFTPで手動アップロード後によく起こります。
対処法
- FTPクライアントで
wp-content/uploadsのパーミッションを 755 または 775 に - その中のファイルは 644 に
- 所有者がWebサーバーの実行ユーザー(www-data、apacheなど)になっているか確認
パーミッションは見落としやすいけど、一度合わせれば再発しにくい項目です。
原因5: プラグインの競合
画像最適化プラグイン(Smush、EWWW、ShortPixel)とセキュリティプラグイン(Wordfence、SiteGuard)は、どちらもアップロード処理に手を入れます。一方が更新で挙動を変えると、他方とぶつかってアップロードだけ通らなくなることがあります。
対処法
- 全プラグインを一旦停止してアップロードを試す
- 通ったら、1つずつ有効化し直して再現するタイミングを特定
- 原因が分かったら設定を見直すか、代替プラグインに乗り換える
原因6: .htaccessやWAFによるブロック
セキュリティ強化のための .htaccess 設定や、サーバー側のWAFがアップロードリクエストを攻撃と誤判定してブロックすることがあります。
対処法
.htaccessを一度デフォルトに戻して試す(戻す前に必ずバックアップ)- レンタルサーバーのWAF設定で、管理画面アクセス時だけ除外する
mod_securityのルールが邪魔していないか、サーバー管理者に確認
原因7: アプリケーションパスワードの設定ミス
外部アプリやAPI経由で上げる場合、WordPress 5.6以降のアプリケーションパスワードが必須です。発行していなかったり、ユーザーの権限が足りないと、401や403で弾かれます。
対処法
- 「ユーザー → プロフィール → アプリケーションパスワード」で新規発行
- ユーザーの権限グループが「投稿者」以上であることを確認(「購読者」では画像を上げられない)
- サイトがHTTPSで動いていることを確認。HTTP環境ではアプリケーションパスワードが無効化されているサーバーが多い
原因8: モバイル回線やWi-Fiの不安定さ
アップロード中に回線が一瞬切れたり、速度が落ちると、転送が途中で止まって失敗します。大きな画像ほど影響が大きい。
対処法
- 安定したWi-Fi下でやり直す
- タイムアウトを延ばすため
wp-config.phpにset_time_limit(300);を追加 - バックグラウンド送信とリトライ機能があるアプリを使う(ブラウザだと裏に回した瞬間に止まることがある)
iPhoneから何度も詰まるなら、専用アプリが結局一番早い
原因1〜8を1個ずつ潰せる人なら自力で解決できます。ただ、iPhoneから写真を上げるという用途に限れば、毎回これをやるのは正直しんどい。
SnapPress はiPhone(iOS)からWordPressに写真を一括アップロードする専用アプリです。上で挙げたトラブルを、そもそも起こさない設計にしてあります。
- HEIC形式をそのまま読み込んで、送信時に自動でJPEGへ変換する
- 3段階の画質プリセットでファイルサイズを自動調整。上限エラーを踏まない
- 初回セットアップはQRコード読み取りでアプリケーションパスワードを自動発行
- WordPress REST APIで直接送るので、ブラウザ依存のプラグイン競合を避けられる
- 最大20枚を一括送信。1枚ずつ失敗をリトライする苦行から解放される
無料で始められます(月10回まで)。無制限にするなら Standard 月¥150または買い切り¥800。アカウント登録は不要です。
メディアライブラリ全般の整理や運用面が気になる方は、合わせて WordPressメディアライブラリの使い方完全ガイド もどうぞ。
症状別・最初に試すことの早見表
| 症状 | 最初に試すこと |
|---|---|
| iPhoneで撮った写真だけ失敗する | iPhoneのフォーマットを「互換性優先」に、またはSnapPressを使う |
| 「ファイルサイズが上限を超えています」 | upload_max_filesize を32MB以上に、または写真を圧縮 |
| 「HTTPエラー」 | WP_MEMORY_LIMIT を 256M に |
| 「ディレクトリを作成できませんでした」 | wp-content/uploads を755に |
| 原因不明・断続的に失敗する | プラグインを1つずつ停止して切り分け |
よくある質問
サーバー設定を変更する権限がない場合は?
レンタルサーバーによっては、管理画面から upload_max_filesize や memory_limit を変更できます(エックスサーバー、ロリポップ、ConoHaなど)。「PHP設定」の項目を探してみてください。それでも上限が足りないなら、画像を事前に圧縮するか、アプリ側で自動最適化する方が現実的です。
WordPress.comでも同じ原因ですか?
WordPress.comは無料プランと有料プランでアップロードできる形式やサイズ上限が違います。HEICは非対応のプランが多いです。ビジネスプラン以上ならREST APIが使えるので、SnapPressのような外部アプリも使えます。
プラグインを特定してもエラーが止まらない場合は?
テーマの問題かもしれません。一度デフォルトテーマ(Twenty Twenty-Fourなど)に切り替えて、エラーが消えるか確認してください。テーマが原因なら開発元に報告するか、別のテーマに乗り換えを検討します。
サーバー移転直後にアップロードできなくなった
パーミッションの再設定が必要なケースがほとんどです。wp-content/uploads のオーナーとパーミッションを確認し、必要ならFTPで直してください。wp-config.php のDB接続情報が正しいかも合わせて見ておきましょう。
スマホからは上げられるのにPCからだけエラーになる
PC側のブラウザキャッシュや拡張機能が原因のことがあります。シークレットウィンドウで試す、別のブラウザで試す、拡張機能を無効化する、の順に試してください。管理画面のHTTPS接続が混在コンテンツになっていないかも確認しておくと安心です。
iPhoneから写真を上げるたびに毎回詰まっている方へ
SnapPressならHEICもファイルサイズも自動で処理して、設定ミスはQRコードのワンタップで回避できます。無料(月10回まで)で、今すぐ試せます。
SnapPressを見る