php 使用PHP CLI检查域的过期日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 使用PHP CLI检查域的过期日期相关的知识,希望对你有一定的参考价值。

#!/usr/bin/php
<?php
function get_ssl_domain_expiration($ssl_domain){
  $i = 0;
  $ssl_domain_data = array();

  $domain = parse_url($ssl_domain, PHP_URL_HOST);
  $g = stream_context_create (array("ssl" => array("capture_peer_cert" => true)));
  $r = stream_socket_client("ssl://${domain}:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g);
  $cert = stream_context_get_params($r);
  $certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']);
  
  $current_date = new DateTime(date('Y-m-d'), new DateTimeZone('America/Los_Angeles'));
  $expiration_date = new DateTime(date('Y-m-d', $certinfo['validTo_time_t']), new DateTimeZone('America/Los_Angeles'));
  $interval = $current_date->diff($expiration_date);
  $days_left = (int)$interval->format('%a');
  
  $ssl_domain_data = array(
    'domain' => $domain,
    'expiration_date' => $expiration_date->format('m/d/Y'),
    'days_left' => $days_left,
  );

  return $ssl_domain_data;
}

if( $argv[1] ){
  $normalized_domain = parse_url('http://' . str_replace(array('https://', 'http://'), '', $argv[1]), PHP_URL_HOST);
  // echo "normalized_domain " . $normalized_domain . "\n";
  if(filter_var('http://'.$normalized_domain, FILTER_VALIDATE_URL)){
    $data = get_ssl_domain_expiration('https://'.$normalized_domain);
    echo $data['expiration_date']." - ";
    echo $data['domain']." has ";
    echo $data['days_left']." days left";
    echo "\n";
  } else {
    echo "\"" . $argv[1] . "\" is not a valid domain name.\n"; 
  }
} else {
  echo "You must supply a valid domain name.\n";
  echo "Example:\n";
  echo "php check-domain-expiration.php www.example.com\n";
}

以上是关于php 使用PHP CLI检查域的过期日期的主要内容,如果未能解决你的问题,请参考以下文章

PHP DateTime 信用卡过期

使用 AJAX 检查 PHP 会话是不是存在或过期

php 操作redis 以及几个常用命令

PHP - 当域的IP专用时检查域是不是与服务器的IP匹配

我如何检查会话是否将在PHP中过期[重复]

如何使用php检查域年龄