wpXサーバーでfile_get_contentsが使えないので代替としてcURLを使った方法

wpXサーバーでfile_get_contentsが使えないので代替としてcURLを使った方法

wpXサーバーでfile_get_contentsが使えないので代替としてcURLを使った方法

先日、APIから値を取得するためにfile_get_contentsを使おうと思ったのですが、対象サイトはwpXサーバーで運用しており、wpXサーバーではセキュリティの都合上file_get_contentsが許可されていませんでした。

通常はphp.iniに「allow_url_fopen=on」を追加すればfile_get_contentsが使えるようになりますが、wpXサーバーではそもそもfile_get_contentsを利用可能にするための設定もできなくなっており、file_get_contents以外の方法で値を取得する必要があります。

そこで、cURLをfile_get_contentsの代替として使って値を取得できたので、備忘録として残しておきたいと思います。

ちなみに、環境は以下のような感じです。

  • サーバー:wpX
  • CMS:WordPress5.0.3
  • PHPバージョン:PHP7.0.30

今回はwpXサーバー・WordPressを使っていますが、wpX・WordPress以外の環境でも有効です。

file_get_contentsが使えない時の対処法

まずは以下の関数を定義しましょう。WordPressの場合、functions.phpに以下コードを追加します。


function curl_get_contents( $url, $timeout = 60 ){
  $ch = curl_init();
  curl_setopt( $ch, CURLOPT_URL, $url );
  curl_setopt( $ch, CURLOPT_HEADER, false );
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
  $result = curl_exec( $ch );
  curl_close( $ch );
  return $result;
}

あとは、file_get_contentsをcurl_get_contentsに置き換えてあげるだけです。


$url = 'https://example.com/';
$curl_get_cont = curl_get_contents($url);

これで、file_get_contentsが使えない環境でも、同様の処理を行うことができるようになります。

あとがき

file_get_contentsが使えなくて困った!という場合はぜひお試しください。

別ドメイン・別サーバーにインストールされたWordPressの内容を表示する方法」という記事の中でも使いましたが、cURL関数って便利ですね!

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

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