PHPでSSL対応かチェックする

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

PHPで”Registered Stream Socket Transports”の値を取得する方法

[PHP Script]
<?php
//ストリーム可能なソケットのトランスポート一覧
print_r( stream_get_transports() );
//SSL対応かのチェック
$a = stream_get_transports();
echo ( in_array('ssl', $a) ) ? "SSL対応" : "SSL非対応";
?>
[Result sample]
Array
(
[0] => tcp
[1] => udp
[2] => unix
[3] => udg
[4] => ssl
[5] => sslv3
[6] => sslv2
[7] => tls
)
SSL対応

PEARのNet_POP3を利用してGmailにPOP3でメールを受信するクラスを作る際に、サーバによってSSL(”ssl://”型のデータストリーム)が使えるか事前にチェックする必要がありました。

通常は”phpinfo()”で、登録されたソケットの一覧を確認するのですが、クラス内でチェックできるようにしたかったのですが、若干探すのに苦労したので、備忘録として。

経緯

“Registered Stream Socket Transports”の値は、$_SERVER環境変数には入っていません。”getenv()”や”ini_get()”関数も試したのですが、どうにも取得できなかったので、PHP内でShellコマンドを叩いて結果を取得してどうか試してみました。

<?php
echo `php -i | grep "Stream Socket"`; //バッククオート注意
?>

アッチョンプリケ!このサーバ、セーフモードやんけ。

Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes in Safe Mode in /virtual/xxxx/public_html/test/test.php on line 18

困った(薄い知識に溺れた)時のPHPマニュアルという事で、PHPのストリーム関連のマニュアルを覗いてたら「登録されたソケットのトランスポートの一覧を取得する」ドンピシャの関数がありました。ありがたや。


スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存