2016-10-20 19 views
1


私はPHPでプロジェクトを進めており、画像を切り取るためのモジュールを作成しました。画像をトリミングするための私のコードは次のとおりです。
画像作成機能がhttpsで動作しない

$targ_w = 400; 
 
$targ_h = 400; 
 
$jpeg_quality = 90; 
 
$src = "PATH_OF_ORIGINAL_IMAGE"; 
 
$filename = pathinfo($src); 
 
$extension = $filename['extension']; 
 
if($extension == 'jpg' || $extension == 'jpeg') 
 
{ 
 
\t $img_r = imagecreatefromjpeg($src); 
 
} 
 
if($extension == 'png') 
 
{ 
 
\t $img_r = imagecreatefrompng($src); 
 
} 
 
if($extension == 'gif') 
 
{ 
 
\t $img_r = imagecreatefromgif($src); 
 
} 
 
$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 
 
$imageName = "cropped.jpeg"; 
 
imagecopyresampled($dst_r,$img_r,0,0,600,600,$targ_w,$targ_h,600,600); 
 
$path = "PATH_FOR_NEW_IMAGE".$imageName; 
 
header('Content-type: image/jpeg'); 
 
imagejpeg($dst_r,$path,$jpeg_quality);

このコードは、偉大な作業と提供内容で画像をトリミングしています。しかし私はhttpからhttpsへ私のウェブサイトを移動しました。このコードは機能しなくなりました。画像を表示したり作成したりするエラーはありません。しかし、画像は空白と黒の画像です。ウェブサイトをhttpに戻すと、もう一度作業が開始されます。しかし私は自分のウェブサイトをhttpsにしたい。私は2つの質問があり、それらは:

  1. 画像作成が空白になってなぜ?
  2. サーバーの問題なら、どうすればこの問題を解決できますか?

事前に感謝..

+0

本当に間違いはありませんか? error_reporting(E_ALL)で試したことがありますか。 ini_set( 'display_errors'、1); srcはローカルパスまたはURLですか? –

+0

エラーを表示しています。メッセージ:imagecreatefrompng():SSL CA証明書の問題(パス?アクセス権?) – Santab

答えて

0

回答を見るURLから$ srcを読み込んでいると思います。

私はこのように、それを操作する前に、ファイルをダウンロードしようとするだろう:

$contex = ["ssl" => [ 
    "verify_peer"  => false, 
    "verify_peer_name" => false] 
]; 

$fileContent = file_get_contents($src, false, $context); 

その後、あなたとあなたのイメージを作成することができます拡張子を確認せず

$img_r = imagecreatefromstring($fileContent); 

、それが有効なイメージを返します。文字列の内容がイメージでない場合はfalseを返します。 この方法では、pngイメージの名前をjpg拡張子で変更した場合に発生するエラーも回避します。

ssl checkを無効にしていることに注意してください。セキュリティホールになる可能性があります。

関連する問題