2018年6月3日日曜日

PHP+MySQLのサイトをHostingerからXdomainに移行してハマったこと

最近、Hostingerのレンタルサーバの無料プランがなくなってしまいました。
そのため、Xdomainのレンタルサーバにオブジェクトを全て移行してPHP+MySQLのサイトを作成しています。
本記事では、HostingerからXdomainに移行してハマったこと4つを備忘録として記載します。


【1.header関数を実行するためにsession_start()の次にob_start()を実行する】
phpでheader関数を実行するためにはphp.iniのoutput_bufferingをOnにする必要がありますが、Xdomainではoutput_bufferingの設定を変更できませんでした。
そのため、session_start()の次にob_start()を実行するすることで、header関数を実行できる設定に変更しました。


【2.file_get_contentsの代わりにcURLを使う】
phpでfile_get_contentsを実行するためにはphp.iniのallow_url_fopenをOnにする必要がありますが、Xdomainではallow_url_fopenの設定を変更できませんでした。
そのため、file_get_contentsの代わりにcURLを使用することでアクセス先のサイトの情報を取得しました。


【3.cURLでCURLOPT_SSL_VERIFYPEERをfalseにする】
cURLでサイト情報を取得する場合、サイトによってはサーバ証明書の検証で失敗し、レスポンスコード403が返ってきてしまいます。
CURLOPT_SSL_VERIFYPEERをfalseにすることで検証しない設定にし、回避できました。


【4.cURLで取得結果のレスポンスコードが403だった場合に再取得する】
上記の設定を行っても、レスポンスコードが403になることがあります。
その場合、何回かアクセスを行うことでレスポンスコードが200になることがあったので、cURLを実行する関数を再帰関数にすることで回避できました。