質問: file_get_contents('https://www.yahoo.co.jp/'); var_dump($rss); ``` ホストが違えば問題ありませんので、php.iniの設定等ではないようです。 さらに確認したところ、ドメイン名(ホスト名)が、自ホストの時にfalseになることが分かりました。 そこで、以下のような記事をいくつか見つけ、/etc/hostsを確認してみました。 http://q.hatena.ne.jp/1202255873 しかし、確認したところ、すでに自ホストのローカルアドレスの設定は存在するようでした。 ``` 127.0.0.1 example.com XXX.XXX.XXX.XXX example.com ``` ※Xは実際には数字 念のため、コマンドラインからwgetを実行してみました。 結果は以下のようになりました。 ``` [root@example ~]# wget http://example.com/magazine/feed --2017-12-11 16:37:38-- http://example.com/magazine/feed Resolving example.com (example.com)... 127.0.0.1, XXX.XXX.XXX.XXX Connecting to example.com (example.com)|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-12-11 16:37:38 ERROR 404: Not Found. ``` 接続はできているが、404でした。 そこで、「example.com」のログを確認したところ、該当時刻にアクセスログはありませんでした。 さらに探したところ、デフォルトのログ(/var/log/httpd/access_log)にアクセスが出力されていました。 ということで、どうやら、 「自ホストを示すURLでアクセスしたとき、バーチャルホストの切り分けができず、デフォルトのドキュメントルートを参照している」 ということのようです。 調査方法を含め正しいのか不明ですが、こちらを解決できる(自ホスト内のバーチャルホストに対してHTTP経由で(url_fopenで)アクセスする)方法はありますでしょうか。
回答: /etc/hostsにあったローカルIPへの記述(以下)からexample.comを消去することで、動作するようになりました。 ``` 127.0.0.1 example.com ``` 結果的に残った ``` XXX.XXX.XXX.XXX example.com ``` でアクセスされることで、きちんとバーチャルホストの通りのドキュメントルートを参照されるようになったようです。 つまり、 (少なくともPleskデフォルトでは)ループバックアドレスでアクセスされたときには、バーチャルホストが効かない ということのようです。 ありがとうございました。