2017-11-29 2 views
0
<?php 
$content = [ 'http' => [ 'method' => 'GET' ], 'ssl' => [ 'verify_peer' => false, 'allow_self_signed'=> true ] ]; 
$url = 'http://localhost/server-status'; 
$content = file_get_contents($url); 
$first_step = explode('Current' , $content); 
$second_step = explode("</dl>" , $first_step[1]); 

echo $second_step[0]; 
?> 

PHPが管理パネルのサーバステータスから統計情報を取得できるようにSSLを無効にしようとしていますが、localhostは常にhttpsになります。つまり、SSLは有効になっているためlocalhostでは有効ではありません。ローカルホスト上で自己署名PHPを許可しますか? (SSLを無効にしますか?)

file_get_contentsを実行しているときにこれを無効にするにはどうすればよいですか?あなたはfile_get_contentsコールに作成したストリームコンテキストを渡す必要があり

+3

サーバーが証明書を信頼するのはなぜですか? https://unix.stackexchange.com/questions/90450/adding-a-self-signed-certificate-to-the-rusted-list – ceejayoz

+0

その最初の行は '$ content'の代わりに' $ context'でしょうか? 'file_get_contents'呼び出しにも渡していません。あるいは、自動的に有効になる、そのコンテキストで 'stream_context_set_default'を呼び出すこともできます。 – iainn

+0

@iainnどうすればいいですか、私が間違っていた場所を見つけ出すのに役立つ答えを投稿できますか? – rakupu

答えて

1

$context = stream_context_create(['ssl' => [ 'verify_peer_name' => false, 'verify_peer' => false, 'allow_self_signed'=> true ] ]); 

$content = file_get_contents('https://localhost/', false, $context); 

を私はここverify_peer_nameオプションで追加されましたが、あなたはそれを必要としない場合があります。

+0

GENIUS! よろしくお願いします! – rakupu

関連する問題