如何确定运行PHP应用程序的Web服务器(Apache)是否支持HTTPS?

时间:2012-11-17 03:55:30

标签: php apache https

请注意,我想知道它是否能够接受HTTPS请求,而不是它是否正在使用它。 还请注意,扫描端口或进行任何其他[a]同步请求不是我的选择,因为它需要非常快。

有没有办法向Apache“询问”它,例如:从命令行?

编辑:感谢所有的想法,但他们是为了像你和我这样的人类“手动”检查上述事实。我可以弄明白,相信我。我只是觉得很明显,这些短语“[a]同步请求”和“它需要非常快”意味着PHP应用程序形式的软件。

4 个答案:

答案 0 :(得分:3)

您可以phpinfo();查看此内容,也可以看到mod_ssl已开启或关闭

enter image description here

答案 1 :(得分:1)

我认为您需要在页面中运行此代码:<?php echo phpinfo();,您将获得有关版本和设置的所有信息

答案 2 :(得分:1)

如果这是您管理的服务器:

  1. 检查Apache中是否启用了mod_ssl
  2. 检查您是否正在侦听Apache的ports.conf文件中的端口443
  3. 设置SSL主机以侦听来自ports.conf的IP:端口设置
  4. 检查您是否使用防火墙阻止端口443(此处有许多防火墙选项)
  5. 如果您已配置Apache并且尚未关闭防火墙,则Apache应告知操作系统侦听端口443并且它将处理请求。

    如果这是共享服务器或不是您自己管理的服务器 - 请询问您的服务器支持/ admin

答案 3 :(得分:1)

这是一种检查HTTPS协议支持的方法,将phpinfo()信息保存到数组中:

// NOTE: This section was extracted from the PHP Manual, example from **jon at sitewizard dot ca**
ob_start();
phpinfo();
$PHPInfo = array( 'phpinfo' => array() );
if ( preg_match_all( '#(?:<h2>(?:<a name=".*?">)?(.*?)(?:</a>)?</h2>)|(?:<tr(?: class=".*?")?><t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>)?)?</tr>)#s',
                     ob_get_clean(), $Matches, PREG_SET_ORDER )
) {
  foreach ( $Matches as $Value ) {
    if ( strlen( $Value[ 1 ] ) ) {
      $PHPInfo[ $Value[ 1 ] ] = array();
    }
    elseif ( isset( $Value[ 3 ] ) ) {
      $PHPInfo[ end( array_keys( $PHPInfo ) ) ][ $Value[ 2 ] ] = isset( $Value[ 4 ] ) ? array( $Value[ 3 ],
                                                                                               $Value[ 4 ] ) : $Value[ 3 ];
    }
    else {
      $PHPInfo[ end( array_keys( $PHPInfo ) ) ][ ] = $Value[ 2 ];
    }
  }
}

// End of extracted section ----------------------

$HTTPS      = $PHPInfo[ 'curl' ][ 'Protocols' ];
$HTTPSFound = mb_strstr( $HTTPS, 'https', FALSE );

if ( $HTTPSFound ) {
  echo "HTTPS supported<br /><br />";
}
else {
  echo "HTTPS NOT supported<br /><br />";
}

附加说明:此答案不需要“手动检查”。它通过脚本获取信息!