php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #74980 Narrowing occurred during type inference
Submitted: 2017-07-24 12:46 UTC Modified: 2017-07-24 13:30 UTC
From: cschneid@php.net Assigned:
Status: Closed Package: opcache
PHP Version: 7.2.0beta1 OS: openSUSE 42.2 (x86_64)
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: cschneid@php.net
New email:
PHP Version: OS:

 

 [2017-07-24 12:46 UTC] cschneid@php.net
Description:
------------
Our codebase triggered
  "E_WARNING: Narrowing occurred during type inference. Please file a bug report on bugs.php.net"
in our class loader which is installed using spl_autoload_register().

When trying to fetch the page a second time it reports
  "Fatal error: Cannot declare class xy, because the name is already in use in xy.class  on line 3"


Doing
  sudo apachectl graceful
to clear the opcache and reloading bring the Narrowing warning again.

I don't have a short reproduction script but I still reported the bug as the warning says so :-)


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2017-07-24 13:30 UTC] nikic@php.net
Are you able to determine on which file this is triggered (e.g. by just printing out the file name in the class loader and seeing after which the error occurs)? I'm assuming it's probably not the class loader itself?

If you can find the file, can you send it to nikic@php.net? This is one of those cases where a single file should be able to reliably reproduce the problem without context.
 [2017-07-24 15:31 UTC] cschneid@php.net
I managed to produce a test file narrowing.php

<?php

class A
{

static function foo()
{
	foreach ([] as $value)
		$arr["foo"]["bar"] = $value;

	foreach ($arr as $value)
		bar($value + []);
}

}

with a php.ini like

zend_extension                  = opcache.so
opcache.enable_cli		= 1

and then calling it with

php -c php.ini narrowing.php

results in

Warning: Narrowing occurred during type inference. Please file a bug report on bugs.php.net in Unknown on line 0
 [2017-07-26 04:08 UTC] laruence@php.net
Automatic comment on behalf of laruence@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=3df47c12f77a71f90778ec42e6892c828e702fb2
Log: Fixed bug #74980 (Narrowing occurred during type inference)
 [2017-07-26 04:08 UTC] laruence@php.net
-Status: Open +Status: Closed
 [2017-11-28 09:28 UTC] matteoipri at gmail dot com
Hi all,
Arch Linux and PHP 7.1.12-1 here running Nextcloud on the server.
Since the update to 7.1.12 in the logs I find the following message:

Narrowing occurred during type inference. Please file a bug report on bugs.php.net at /usr/share/nginx/nextcloud/lib/composer/composer/ClassLoader.php#444

I am not the only one to have this same error, see Nextcloud forum:
https://help.nextcloud.com/t/php-error-narrowing-occurred-during-type-inference/24010

How can I help? Should I open a new bug?
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Oct 08 12:01:26 2024 UTC