Closed carinihdev closed 2 years ago
Thank you for reporting an issue!
The code is tested for Syntax, so a syntax error in the SDK seems unlikely to me š¤, and if you look at https://github.com/kreait/firebase-php/blob/5.26.1/src/Firebase/Exception/MessagingApiExceptionConverter.php#L56 or https://github.com/kreait/firebase-php/blob/5.26.1/src/Firebase/Messaging/ApiClient.php, there aren't even |
s in there š
At the moment we can only see where the error was not further handled, but it would be interesting to see where it actually happened. Could you please also share the full stack trace of the error you've encountered?
If you have the means, please provide it as output from the Terminal, not as HTML - HTML is quite difficult to read š
Also, if you're running this in the browser, please make sure that you are using the same PHP version in the Webserver as you're running in the terminal. I've seen reports of errors when it turns out that there were two different PHP versions used.
You should be able to do this by dropping an echo PHP_VERSION; exit
somewhere and opening the page in the browser.
Are you aware of https://github.com/tattersoftware/codeigniter4-firebase ? It's a well-maintained Codeigniter integration so that you don't have to handle the Factory yourself (your code looks alright, I just wanted to be sure you know all possible options š¤)
Hi Jeromegamez
Thanks for your fast reponse.
Hmm yes it is weird there is no | in the codes.
So I am using Codeigniter 3.1.11, and use it as an API backend.
For the API, I used chriskacerguis/codeigniter-restserver as well.
The following is the full stack trace. An uncaught Exception was encountered Type: Kreait\Firebase\Exception\Messaging\MessagingError
Message: syntax error, unexpected '|', expecting variable (T_VARIABLE)
Filename: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Exception/MessagingApiExceptionConverter.php
Line Number: 56
Backtrace:
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Messaging/ApiClient.php Line: 44 Function: convertException
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Messaging.php Line: 54 Function: send
File: /var/www/development/api/application/controllers/Customer.php Line: 3418 Function: send
File: /var/www/development/api/vendor/chriskacerguis/codeigniter-restserver/src/RestController.php Line: 593 Function: call_user_func_array
File: /var/www/development/api/index.php Line: 316 Function: require_once
For the testing I m using Postman, by calling to the URL.
Are you aware of https://github.com/tattersoftware/codeigniter4-firebase ? --> Yes. Unfortunately I am still using Codeigniter 3, which is not compatible with Codeigniter 4.
Could you try and and let your Controller output the currently used PHP version? Syntax errors are usually an indicator that the PHP versions on the Terminal and in the Web Server don't match.
The test for php version as follow..
From terminal with php -v PHP 7.4.3 (cli) (built: Oct 25 2021 18:20:54) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
From controller code: echo phpversion();
output: 7.4.3
Ok, that's strange! I will try to reproduce the problem in the next days (it's 2:45 a.m. for me right now š ), but please let me know if you find a solution earlier.
Another thing you could try is to downgrade the SDK to an earlier version (e.g. 5.14, just to try if it works then). If it does work with an earlier version, try upgrading step by step until it stops working and let me know the version number.
Noted will do. Thanks for the support.
I have downgraded to "kreait/firebase-php": "5.14", but unfortunately encountered different error below:
An uncaught Exception was encountered Type: Kreait\Firebase\Exception\Messaging\NotFound
Message: Requested entity was not found.
Filename: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Exception/Messaging/NotFound.php
Line Number: 22
Backtrace:
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Exception/MessagingApiExceptionConverter.php Line: 102 Function: withErrors
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Exception/MessagingApiExceptionConverter.php Line: 108 Function: convertResponse
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Exception/MessagingApiExceptionConverter.php Line: 50 Function: convertGuzzleRequestException
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Messaging/ApiClient.php Line: 47 Function: convertException
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Messaging.php Line: 77 Function: send
File: /var/www/development/api/application/controllers/Customer.php Line: 3416 Function: send
File: /var/www/development/api/vendor/chriskacerguis/codeigniter-restserver/src/RestController.php Line: 593 Function: call_user_func_array
File: /var/www/development/api/index.php Line: 316 Function: require_once
Okay, but that's better - this means that the registration token you're sending the message has been unregistered or doesn't belong to the same Firebase project you're using to send the message.
Could you now upgrade the SDK until you encounter the version where it stops working? I would probably try 5.20, if it works, 5.21, if it doesn't work 5.19 and so on š¤
The following results are for version 5.20
An uncaught Exception was encountered Type: Kreait\Firebase\Exception\Messaging\NotFound
Message: The message could not be delivered to the device identified by 'xxxxxxxxxxxxxx'. Although the token is syntactically correct, it is not known to the Firebase project you are using. This could have the following reasons: - The token has been unregistered from the project. This can happen when a user has logged out from the application on the given client, or if they have uninstalled or re-installed the application. - The token has been registered to a different Firebase project than the project you are using to send the message. A common reason for this is when you work with different application environments and are sending a message from one environment to a device in another environment.
Filename: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Exception/Messaging/NotFound.php
Line Number: 40
Backtrace:
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Messaging.php Line: 58 Function: becauseTokenNotFound
File: /var/www/development/api/application/controllers/Customer.php Line: 3416 Function: send
File: /var/www/development/api/vendor/chriskacerguis/codeigniter-restserver/src/RestController.php Line: 593 Function: call_user_func_array
File: /var/www/development/api/index.php Line: 316 Function: require_once
Version 5.19, 5.20 has the same result with 5.21. --> Message: The message could not be delivered to the device identified...
5.25 and 5.26 has the same result as well --> Message: The message could not be delivered to the device identified...
strangely, now 5.26.1 has the same result now -->
An uncaught Exception was encountered Type: Kreait\Firebase\Exception\Messaging\NotFound
Message: The message could not be delivered to the device identified by 'xxxxxxxxxxxxx'. Although the token is syntactically correct, it is not known to the Firebase project you are using. This could have the following reasons: - The token has been unregistered from the project. This can happen when a user has logged out from the application on the given client, or if they have uninstalled or re-installed the application. - The token has been registered to a different Firebase project than the project you are using to send the message. A common reason for this is when you work with different application environments and are sending a message from one environment to a device in another environment.
Filename: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Exception/Messaging/NotFound.php
Line Number: 40
Backtrace:
File: /var/www/development/api/vendor/kreait/firebase-php/src/Firebase/Messaging.php Line: 58 Function: becauseTokenNotFound
File: /var/www/development/api/application/controllers/Customer.php Line: 3416 Function: send
File: /var/www/development/api/vendor/chriskacerguis/codeigniter-restserver/src/RestController.php Line: 593 Function: call_user_func_array
File: /var/www/development/api/index.php Line: 316 Function: require_once
That's good! All these messages say that the target device couldn't be reached, in the latest version even with an example.
Since you now don't receive a syntax error anymore, I have to assume that something went wrong during the composer install and perhaps left some files corrupted, or that a file has been altered somehow and introduced the syntax error.
I would consider this issue closed then š , if you agree š¤
Yes issue closed. Thanks very much !
Still facing this issue : php: 8 "kreait/firebase-php": "^7.2.1", "google/cloud": "^0.203.2", "grpc/grpc": "^1.38"
Describe the issue you are experiencing
Hello all, I encountered an issue with Cloud Messaging.
$messaging->send($message); --> This function result in the following error:
An uncaught Exception was encountered Type: Kreait\Firebase\Exception\Messaging\MessagingError Message: syntax error, unexpected '|', expecting variable (T_VARIABLE) Filename: ../vendor/kreait/firebase-php/src/Firebase/Exception/MessagingApiExceptionConverter.php Line Number: 56
I used the following codes:
use Kreait\Firebase\Factory; use Kreait\Firebase\Messaging\CloudMessage; use Kreait\Firebase\Messaging\Notification;
$factory = (new Factory)->withServiceAccount('path to sdk json'); $messaging = $factory->createMessaging(); $message = CloudMessage::withTarget('token', 'my device token') ->withNotification(Notification::create('Title', 'Body'));
$messaging->send($message);
Error occur when it reach this function --> $messaging->send($message);
I have also tried with kreait/firebase v6. Same error occur.
Environment: PHP 7.4.3. kreait/firebase-php 5.26.1 Framework Codeigniter 3.1.11 with composer autoload.
Thanks for the help.
Installed packages
chriskacerguis/codeigniter-restserver 3.1.2 CI Rest Server fig/http-message-util 1.1.5 Utility classes and constants... firebase/php-jwt v5.5.1 A simple library to encode an... google/auth v1.18.0 Google Auth Library for PHP google/cloud-core v1.43.2 Google Cloud PHP shared depen... google/cloud-storage v1.26.0 Cloud Storage Client for PHP google/crc32 v0.1.0 Various CRC32 implementations guzzlehttp/guzzle 7.4.1 Guzzle is a PHP HTTP client l... guzzlehttp/promises 1.5.1 Guzzle promises library guzzlehttp/psr7 2.1.0 PSR-7 message implementation ... kreait/clock 1.1.0 A PHP 7.0 compatible clock ab... kreait/firebase-php 5.26.1 Firebase Admin SDK kreait/firebase-tokens 1.16.1 A library to work with Fireba... lcobucci/clock 2.1.0 Yet another clock abstraction lcobucci/jwt 4.1.5 A simple library to work with... monolog/monolog 2.3.5 Sends your logs to files, soc... mtdowling/jmespath.php 2.6.1 Declaratively specify how to ... psr/cache 2.0.0 Common interface for caching ... psr/http-client 1.0.1 Common interface for HTTP cli... psr/http-factory 1.0.1 Common interfaces for PSR-7 H... psr/http-message 1.0.1 Common interface for HTTP mes... psr/log 3.0.0 Common interface for logging ... psr/simple-cache 1.0.1 Common interfaces for simple ... ralouphie/getallheaders 3.0.3 A polyfill for getallheaders. riverline/multipart-parser 2.0.9 One class library to parse mu... rize/uri-template 0.3.4 PHP URI Template (RFC 6570) s... symfony/deprecation-contracts v3.0.0 A generic function and conven... symfony/polyfill-mbstring v1.24.0 Symfony polyfill for the Mbst... symfony/polyfill-php80 v1.24.0 Symfony polyfill backporting ... symfony/polyfill-php81 v1.24.0 Symfony polyfill backporting ..
PHP version and extensions
composer-plugin-api 1.1.0 The Composer Plugin API ext-bz2 7.4.3 The bz2 PHP extension ext-calendar 7.4.3 The calendar PHP extension ext-ctype 7.4.3 The ctype PHP extension ext-curl 7.4.3 The curl PHP extension ext-date 7.4.3 The date PHP extension ext-dom 20031129 The dom PHP extension ext-exif 7.4.3 The exif PHP extension ext-FFI 7.4.3 The FFI PHP extension ext-fileinfo 7.4.3 The fileinfo PHP extension ext-filter 7.4.3 The filter PHP extension ext-ftp 7.4.3 The ftp PHP extension ext-gd 7.4.3 The gd PHP extension ext-gettext 7.4.3 The gettext PHP extension ext-hash 7.4.3 The hash PHP extension ext-iconv 7.4.3 The iconv PHP extension ext-json 7.4.3 The json PHP extension ext-libxml 7.4.3 The libxml PHP extension ext-mbstring 7.4.3 The mbstring PHP extension ext-mysqli 7.4.3 The mysqli PHP extension ext-mysqlnd 0 The mysqlnd PHP extension (actual version: mys... ext-openssl 7.4.3 The openssl PHP extension ext-pcntl 7.4.3 The pcntl PHP extension ext-pcre 7.4.3 The pcre PHP extension ext-PDO 7.4.3 The PDO PHP extension ext-pdo_mysql 7.4.3 The pdo_mysql PHP extension ext-Phar 7.4.3 The Phar PHP extension ext-posix 7.4.3 The posix PHP extension ext-readline 7.4.3 The readline PHP extension ext-Reflection 7.4.3 The Reflection PHP extension ext-session 7.4.3 The session PHP extension ext-shmop 7.4.3 The shmop PHP extension ext-SimpleXML 7.4.3 The SimpleXML PHP extension ext-sockets 7.4.3 The sockets PHP extension ext-sodium 7.4.3 The sodium PHP extension ext-SPL 7.4.3 The SPL PHP extension ext-sysvmsg 7.4.3 The sysvmsg PHP extension ext-sysvsem 7.4.3 The sysvsem PHP extension ext-sysvshm 7.4.3 The sysvshm PHP extension ext-tokenizer 7.4.3 The tokenizer PHP extension ext-xml 7.4.3 The xml PHP extension ext-xmlreader 7.4.3 The xmlreader PHP extension ext-xmlwriter 7.4.3 The xmlwriter PHP extension ext-xsl 7.4.3 The xsl PHP extension ext-Zend-OPcache 7.4.3 The Zend OPcache PHP extension ext-zip 1.15.6 The zip PHP extension ext-zlib 7.4.3 The zlib PHP extension lib-curl 7.68.0 The curl PHP library lib-iconv 2.31 The iconv PHP library lib-libxml 2.9.10 The libxml PHP library lib-openssl 1.1.1.6 OpenSSL 1.1.1f 31 Mar 2020 lib-pcre 10.34 The pcre PHP library lib-xsl 1.1.34 The xsl PHP library php 7.4.3 The PHP interpreter php-64bit 7.4.3 The PHP interpreter, 64bit php-ipv6 7.4.3 The PHP interpreter, with IPv6 support
On which operating system(s) does the issue occur?
Steps to reproduce the issue.
use Kreait\Firebase\Factory; use Kreait\Firebase\Messaging\CloudMessage; use Kreait\Firebase\Messaging\Notification;
$factory = (new Factory)->withServiceAccount('path to sdk json'); $messaging = $factory->createMessaging(); $message = CloudMessage::withTarget('token', 'my device token') ->withNotification(Notification::create('Title', 'Body'));
$messaging->send($message);
Error message/Stack trace
An uncaught Exception was encountered
Additional information
No response