PHP Trying to get property of non-object

2019-09-07 17:13发布

问题:

I'm running an APNS PHP script and it's working fine but one file throws PHP errors and I want to know how I should fix it.

The following errors pop up:

/usr/bin/php -f /usr/share/nginx/www/processFeedback.php

<br/>Started processing FeedbackPHP Notice:  Trying to get property of non-object in /usr/share/nginx/www/processFeedback.php on line 46
PHP Warning:  stream_socket_client(): unable to connect to  (Failed to parse address "") in /usr/share/nginx/www/classes/Apns.php on line 66
PHP Notice:  Undefined variable: errstrn in /usr/share/nginx/www/classes/Apns.php on line 69
PHP Fatal error:  Uncaught exception 'Exception' with message '<br/>Failed to connect 0 ' in /usr/share/nginx/www/classes/Apns.php:69
Stack trace:
#0 /usr/share/nginx/www/classes/Apns.php(49): Apns->connect()
#1 /usr/share/nginx/www/processFeedback.php(46): Apns->__construct(NULL, 'certificates/ck...', 'passwd')
#2 {main}
  thrown in /usr/share/nginx/www/classes/Apns.php on line 69

Line 46:

$apns = new apns($server->ServerUrl, $certificatePath, $certificate->Passphrase);

Line 66:

$this->stream = stream_socket_client($this->server, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

Line 69:

throw new Exception("<br/>Failed to connect $err $errstrn");

PHP file: https://github.com/bortuzar/PHP-Mysql---Apple-Push-Notification-Server/blob/master/processFeedback.php

DataService.php: https://github.com/bortuzar/PHP-Mysql---Apple-Push-Notification-Server/blob/master/classes/DataService.php

APNS.php: https://github.com/bortuzar/PHP-Mysql---Apple-Push-Notification-Server/blob/master/classes/Apns.php

I'm not a PHP expert so what am I missing?

回答1:

Just spotted this in the stack trace:

#1 /usr/share/nginx/www/processFeedback.php(46): Apns->__construct(NULL, 'certificates/ck...', 'passwd') .

This clearly shows that $server is NULL. What do you expect the ServerUrl to be? Maybe you could just enter that as a string in the line in question, like so:

$apns = new apns('myServerUrl', $certificatePath, $certificate->Passphrase)