CentOS 7.2 + Plesk 12
の環境で作成したバーチャルホストの1つで、PHPアプリケーションを開発中です。
課題は、以下のようなシンプルなコードです。
PHP
1$rss = file_get_contents('http://example.com/feed'); 2var_dump($rss);
※example.comは、自ホストです。実際には違うドメインです。
これのfile_get_contentsの返り値がfalseになってしまうので、解消したいです。
なお、以下は、期待通りに文字列が返ってきて、動作します。
PHP
1$rss = file_get_contents('https://www.yahoo.co.jp/'); 2var_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で)アクセスする)方法はありますでしょうか。
回答1件
あなたの回答
tips
プレビュー