我正在尝试从后台运行的PHP脚本发送推送通知(以root身份)。通常,当我在前台运行脚本时,一切正常。当我运行与后台进程相同的脚本时,不能说同样的事情。
$apnsHost = "gateway.push.apple.com";
$apnsPort = 2195;
$apnsCert = "../ck.pem";
$passphrase = "password";
$streamContext = stream_context_create();
$error;
$errorString;
stream_context_set_option($streamContext, "ssl", "local_cert", $apnsCert);
stream_context_set_option($streamContext, "ssl", "passphrase", $passphrase);
$apns = stream_socket_client("ssl://" . $apnsHost . ":" . $apnsPort, $error, $errorString, 20, STREAM_CLIENT_CONNECT, $streamContext);
$ apns在后台运行时始终返回false& $ error是0.根据PHP文档:
如果errno中返回的值为0且函数返回FALSE,则表示错误发生在connect()调用之前。这很可能是由于初始化套接字时出现问题。
我首先想到读取证书文件可能是一个权限问题,所以我在其上做了一个chmod 777。我也试过chowning文件&它的父目录。什么都行不通。 :(
额外信息:我正在运行nginx。