2016年12月18日日曜日

phpで指定したURLのファイルの最終更新日時を取得する方法

サンプルコードは以下の通りです。

ソフトバンクのバナー画像(http://m.online-shop.mb.softbank.jp/mobile/set/common/p/img/int_inc/special/logo-white.png)の最終更新日時を取得するサンプルです。

// ソケット接続開始(引数にはurlとポートを指定)
$fp = @fsockopen("http://m.online-shop.mb.softbank.jp", 80);

if (!$fp) {
    return false;
}

$request = 'GET ' . "mobile/set/common/p/img/int_inc/special/logo-white.png" . " HTTP/1.1\r\n";

// もしベーシック認証が存在する場合は、以下のように指定する
//  $request .= 'Authorization: Basic ' . base64_encode($user . ':' . $pass) . "\r\n";

fwrite($fp, $request);
fwrite($fp, 'Host: http://m.online-shop.mb.softbank.jp\r\n');
fwrite($fp, "Connection: Close\r\n");
fwrite($fp, "\r\n");

while (!feof($fp)) {
    $buf = fgets($fp, 4096);
    if (preg_match('/^([^:]+):(.+)$/', $buf, $matches)) {
        $name  = $matches[1];
        $value = trim($matches[2]);
        if ($name == 'Last-Modified') {
            // 最終更新日時を取得する
            $lastModified = $value;
            break;
        }
    }
}
fclose($fp);

2016年12月14日水曜日

phpのcurlでリモートの情報を取得しようとしたら、「Peer certificate cannot be authenticated with known CA certificates」になりました。

Peer certificate cannot be authenticated with known CA certificates
の解消方法、
エラーとなったのは、HTTPS証明書を信頼するように設定されているからです。

テスト環境なので、そのを無視するように設定すれば解消できます。

以下の一行を追加


//下記一行を追加
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);

apacheサーバ、すべてのリクエストをindex.phpに処理させる設定

テストサーバを作っています。
とりあいず、すべての処理を一旦index.phpに集約したいです。
その設定方法を調べてみました。
以下の設定を入れれば(<VirtualHostxx<の中に
)、目的を達成できました。
忘れないため、メモです。

RewriteEngine on
RewriteRule ^.+$ /index.php [L]