2011-03-28 10 views
0

다음 코드는 Linux 서버에서 제대로 작동하는 작동 예제이지만 Azure에서 똑같은 코드를 시도하면 일반 500 내부 서버 오류가 발생합니다.Windows Azure에 대한 iPhone 푸시 알림

모든 상대 파일이 올바르게 업로드되고 SSL을 사용하기 위해 Azure에서 php (php.ini)를 구성했습니다.

왜이 유효한 코드가 Azure에서 실패하는지 누가 알 수 있습니까?

<?php 

function pushOne($deviceToken, $message, $badge) 
{ 
    try { 
     $body = array(); 
     $body['aps'] = array('alert' => $message); 
     $body['aps']['badge'] = $badge; 
     $body['aps']['sound'] = 'RM.caf'; 

     $ctx = stream_context_create(); 
     stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');   
     $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 
     //$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 
     if (!$fp) { 
      return "Failed to connect $err $errstrn"; 
     } 
     $payload = json_encode($body); 
     $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload; 
     fwrite($fp, $msg); 
     fclose($fp); 
     return 'ok'; 
    } catch (Exception $e) 
    {          
     return 'Exception: ' . $e->getMessage(); 
    }  
} 
$deviceToken='11111111 22222222 33333333 44444444 55555555 66666666 77777777 88888888'; 

pushOne ($ deviceToken, 'Hello World', '1'); 에코 'STOP';>

+0

stream_socket_client()를 호출 할 때 오류가 발생한다고 가정합니다. –

답변

0

시도 스크립트의 상단에이를 포함 :이

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

이 대신 500 내부 서버 오류를주는 모든 PHP 오류를 표시합니다.

+0

나는 그것을 시도하지만 하늘색은 실제 오류를 보지 않으며 항상 "500 - 내 경우에는 내부 서버 오류가 표시됩니다. – Giannis