APNs-PHP利用でiOSアプリにプッシュ通知を送ろうとした時に、下記のエラーが表示されました。
ApnsPHP ERROR: Unable to connect to 'tls://gateway.push.apple.com:2195'・・・
このような場合は、証明書ファイル(pemファイル)を疑うこと。
ApnsPHPファイル側を数行コメントアウトする対応がネットで書いてあるが、コメントアウトしなくても動いているので、なぜそうすると送れるのか謎です。
私のケースでは、キーチェーンアクセスから下記の証明書と秘密鍵を書き出す必要がありましたが、
Apple Push Services:[Bundle identifier]
間違えてiPhone Distribution:[Developerアカウント名]の証明書と秘密鍵を書き出していたのが原因でした。
'iPhone Distribution:[Developerアカウント名]'
こちらは、アプリ自体のProvisioningファイルで利用する証明書でした。
あと、よくある原因ですが、秘密鍵を一緒に書き出さなかったということがあるそうです。
複数人で作業している場合は、別のPCで証明書要求ファイルを書き出してしまい、秘密鍵のない状態でp12ファイルを書きだそうとしてしまうケースがあります。