php.iniのallow_url_fopenとWordPress、そしてサーバーの関係

WordPressは必須要件にもあるがPHPで動いている。そして、2025年6月現在はバージョン7.4以上とある。

レンタルサーバーは、PHPの各バージョン環境を用意しているだけでなく、設定ファイル:php.iniにてPHPプログラムの動作を制御している。

WordPressでは、php.iniの要件定義は敢えてしていないが、wp-config.phpに設定されている数値がphp.iniの内容と関係している。

とまあ、前置きはこれくらいにして、WPサイトでとある条件(プラグイン利用)で画像を挿入したときにWPのWarningエラーが表示されるという現象が発生した。下記エラーのパスは一部ダミー。

Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /xxx/www/xxxx/xxxx.com/xxxx/...../wp-includes/class-wp-image-editor-imagick.php on line 156 


Warning: file_get_contents(https://sample.com/xxxx/...../wp-content/uploads/2024/11/sample.jpg): Failed to open stream: no suitable wrapper 
could be found in /xxx/www/xxxx/xxxx.com/xxxx/...../wp-includes/class-wp-image-editor-imagick.php on line 156

[class-wp-image-editor-imagick.php on line 156]で検索したところ、画像の上部に同様のエラーメッセージが表示されているサイトがいくつか出てきた。(メッセージ内容は微妙に違うところもあり)

いろいろ検索&エラーメッセージから類推できることとして、外部ファイルの読み込み/実行することで問題があること。そして、php.iniのallow_url_fopenの設定にたどり着いた。

該当のサーバーのコントロールパネルphp.iniを確認したところ、

allow_url_fopen:off

となっており、ここをチェックボタンの切り替えで、

allow_url_fopen:on

としたところ、エラーメッセージは解消された。

今回は、2つの別サーバーを運用し複数サイトを運用しているユーザさんトラブルで、別サーバの各サイトに同じプラグインを利用しており、もう一つのサーバ(エックスサーバー)にあるサイトではエラーが発生していないことが判明していた。以前からサーバ環境の違いでいろいろと動作が違っていたことを確認していた経緯もあり、最初からサーバ環境であることが予想できた。

サーバ会社によって、この設定を初期設定でON、OFFのいずれかになっている。
セキュリティを重視する場合は、OFFとした方が良さそうであるが、php.iniファイルの設定は柔軟に変更することが出来るので、利用状況により見極める必要だありそうだ。

今回のエラー、実際は外部ファイルを読み込んだのではなかったのだが、プラグインの仕様上、外部ファイルとみなされたイレギュラーなエラーだと判断した。

ちなみに、エックスサーバーでは、「allow_url_fopen」および「allow_url_include」を「無効(Off)」にすることを推奨1しているが、高速・安定化機能「Xアクセラレータ Ver.2」利用時には、強制的に「allow_url_fopen」は初期値である「有効(On)」が適用されている。2

  1. php.ini設定ー不正アクセス(ファイルの改ざん、不正なファイル設置)について ↩︎
  2. XアクセラレータVer.2利用時に無効となるphp.ini設定について ↩︎

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です