Skip to content
This repository has been archived by the owner on Jul 26, 2021. It is now read-only.

PHP Fatal error: Class 'PHP_Token_POW' not found in ..../php-token-stream/PHP/Token/Stream.php on line 218 #65

Closed
tersmitten opened this issue Mar 6, 2017 · 13 comments

Comments

@tersmitten
Copy link

Since last week we see a lot of the following stack traces:

Generating code coverage report in Clover XML format ...PHP Fatal error:  Class 'PHP_Token_POW' not found in /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-token-stream/PHP/Token/Stream.php on line 218
PHP Stack trace:
PHP   1. {main}() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Console/cake.php:0
PHP   2. ShellDispatcher::run() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Console/cake.php:47
PHP   3. ShellDispatcher->dispatch() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/cakephp/cakephp/lib/Cake/Console/ShellDispatcher.php:66
PHP   4. Shell->runCommand() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/cakephp/cakephp/lib/Cake/Console/ShellDispatcher.php:219
PHP   5. TestShell->main() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/cakephp/cakephp/lib/Cake/Console/Shell.php:461
PHP   6. TestShell->_run() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/cakephp/cakephp/lib/Cake/Console/Command/TestShell.php:268
PHP   7. CakeTestSuiteCommand->run() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/cakephp/cakephp/lib/Cake/Console/Command/TestShell.php:283
PHP   8. CakeTestRunner->doRun() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/cakephp/cakephp/lib/Cake/TestSuite/CakeTestSuiteCommand.php:98
PHP   9. PHPUnit_TextUI_TestRunner->doRun() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/cakephp/cakephp/lib/Cake/TestSuite/CakeTestRunner.php:62
PHP  10. PHP_CodeCoverage_Report_Clover->process() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:366
PHP  11. PHP_CodeCoverage->getReport() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Clover.php:84
PHP  12. PHP_CodeCoverage_Report_Factory->create() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage.php:158
PHP  13. PHP_CodeCoverage_Report_Factory->addItems() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Factory.php:75
PHP  14. PHP_CodeCoverage_Report_Factory->addItems() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Factory.php:97
PHP  15. PHP_CodeCoverage_Report_Node_Directory->addFile() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Factory.php:93
PHP  16. PHP_CodeCoverage_Report_Node_File->__construct() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Node/Directory.php:210
PHP  17. PHP_CodeCoverage_Util::getLinesToBeIgnored() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Node/File.php:168
PHP  18. PHP_Token_Stream->__construct() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Util.php:107
PHP  19. PHP_Token_Stream->scan() /var/lib/jenkins/jobs/app/workspace/TASK/PHP_UNIT/app/Vendor/phpunit/php-token-stream/PHP/Token/Stream.php:152

Do you have any idea where they might come from, is it an upgrade of this package or do I need to search it somewhere else :-)

@sebastianbergmann
Copy link
Owner

Which versions of PHP, PHPUnit, and this component are you using?

@tersmitten
Copy link
Author

# php -v
PHP 5.6.30-7+deb.sury.org~trusty+1 (cli) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
# app/Vendor/bin/phpunit --version
PHPUnit 3.7.38 by Sebastian Bergmann.
            "name": "phpunit/php-token-stream",
            "version": "1.2.2",
            "source": {
                "type": "git",
                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
                "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32",
                "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32",
                "shasum": ""
            },

composer.lock.tar.gz

@sebastianbergmann
Copy link
Owner

PHPUnit 3.7 has not been supported (or changed) for years. The same is true for php-token-stream 1.2.

I am sorry but I have to close this issue. Please open a new one if you can reproduce the problem with supported versions of PHPUnit.

@sebastianbergmann
Copy link
Owner

Did you recently update to PHP 5.6? IIRC, the T_POW token was introduced in that version of PHP. And php-token-stream 1.2 does not have support for that.

@tersmitten
Copy link
Author

I understand, but the problem is that CakePHP 2 does not support an up-2-date version of PHPUnit

@tersmitten
Copy link
Author

Did you recently update to PHP 5.6?

No not recently, we are already using 5.6 for a couple of years

@sebastianbergmann
Copy link
Owner

So maybe you recently started to use T_POW in your code. Sorry, but there really is nothing I can do for you.

@tersmitten
Copy link
Author

+			'maxLength' => [
+				'rule' => ['maxLength', 2 ** 16 - 1],
+				'message' => 'Can not be longer than %d characters',
+			],

Is that T_POW?

@sebastianbergmann
Copy link
Owner

** is T_POW, yes.

@tersmitten
Copy link
Author

That explains a lot.

Is there anything I can do to work around this problem (e.g. force a newer version of php-token-stream)?

@sebastianbergmann
Copy link
Owner

Support for T_POW was added in 3f60c2a. The first release with that commit is 1.3.0.

You can certainly try to require ^1.4.11 of this component, for instance. It might just work.

@tersmitten
Copy link
Author

tersmitten commented Mar 6, 2017

@PeeHaa CakePHP 2 does not

@tersmitten
Copy link
Author

# composer update phpunit/php-token-stream
Loading composer repositories with package information
Updating dependencies (including require-dev)                                               
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpunit/php-code-coverage 1.2.18 requires phpunit/php-token-stream >=1.1.3,<1.3.0 -> satisfiable by phpunit/php-token-stream[1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.2.0, 1.2.1, 1.2.2] but these conflict with your requirements or minimum-stability.
    - phpunit/php-code-coverage 1.2.18 requires phpunit/php-token-stream >=1.1.3,<1.3.0 -> satisfiable by phpunit/php-token-stream[1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.2.0, 1.2.1, 1.2.2] but these conflict with your requirements or minimum-stability.
    - phpunit/php-code-coverage 1.2.18 requires phpunit/php-token-stream >=1.1.3,<1.3.0 -> satisfiable by phpunit/php-token-stream[1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.2.0, 1.2.1, 1.2.2] but these conflict with your requirements or minimum-stability.
    - Installation request for phpunit/php-code-coverage (locked at 1.2.18) -> satisfiable by phpunit/php-code-coverage[1.2.18].

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants