1
我有一個腳本,它嚮應用程序執行Apple推送通知。腳本是:Yii阻止Apple推送通知腳本運行
$payload['aps'] = array('alert' => 'This is the alert text',
'badge' => 1, 'sound' => 'default',
'article_id'=> '110'
);
$payload = json_encode($payload);
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = '/var/www/schoolspace/apple_server/mountmercy/MountMercy-dev.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$deviceToken = "xxxxxxxxxxxxxxxxxxxxxxxxx";
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
socket_close($apns);
fclose($apns);
我已經創建了所需的.pem。當我作爲一個獨立的腳本運行:
php index.php
一切正常,應用程序收到通知。有一個警告然而:
Warning: socket_close(): supplied resource is not a valid Socket resource
但它仍然有效。然而,當我運行這個Yii中,我得到的錯誤:
stream_socket_client() [<a href='function.stream-socket-client'>function.stream-socket-client</a>]: Unable to set private key file `/var/www/schoolspace/apple_server/mountmercy/MountMercy-dev.pem'
我甚至得到這個錯誤設置YII_DEBUG爲false時。我在afterSave()中的Yii「Message」模型中運行這段代碼。它與獨立腳本完全相同。但不知何故,Yii阻止了它的運行。有任何想法嗎?