ID: 34009 Updated by: [EMAIL PROTECTED] Reported By: ast at gmx dot ch -Status: Open +Status: Feedback Bug Type: Scripting Engine problem Operating System: Gentoo Linux PHP Version: 4.4.0 New Comment:
Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip Works fine here. Previous Comments: ------------------------------------------------------------------------ [2005-08-05 19:50:05] ast at gmx dot ch Here's the reproduce code: <?php error_reporting(E_ALL); if (version_compare(PHPVERSION(), '4.4.0') != 0) print "This reproduce code is only for PHP 4.4.0"; $bar = new Bug(); $baz = $bar->foo(); class Bug { var $_flag; function Bug() { $this->_flag = 0; } function &foo() { if (!$this->_flag) { $false = false; return $false; /* this is line 18 */ } $false = false; return $false; } } ?> Expected result: ---------------- no NOTICEs Actual result: -------------- Notice: Only variable references should be returned by reference in reproduce.php on line 18 I've added the two other methods in the original reproduce code just to show that very slight modifications of the code do not give a PHP Notice. And please remember that I can't reproduce it on all systems. ------------------------------------------------------------------------ [2005-08-05 19:39:34] [EMAIL PROTECTED] Please provide an exact reproduce code (the URL you've given contains a lot of code snippets and I can't understand which one of them is the reproduce case). ------------------------------------------------------------------------ [2005-08-05 18:01:08] ast at gmx dot ch >From the reproduce script: Unexpected result oberserved on - http://nl01.pcextreme.nl/phpinfo.php (PHP 4.4.0, Linux Linux i686) - PHP 4.4.0 cgi hosted by Powweb.com, Apache/1.3.33 (Unix) FrontPage/5.0.2.2635 mod_ssl/2.8.22 OpenSSL/0.9.7d PowWeb/1.1, FreeBSD clust05-www01.powweb.com 4.11-RELEASE FreeBSD 4.11-RELEASE #0: Thu Ma i386 - Gentoo linux, PHP 4.4.0, apache 2, x86: http://dev.nei.ch/bugs/php440_notice_bug/phpinfo_gentoo_with_bug.html Correct behavior observed on - dozens / hundreds other servers, e.g. - Windows XP SP 2, PHP 4.4.0 cgi, apache 2, x86 - Gentoo linux, PHP 4.4.0, apache 2, x86: http://dev.nei.ch/bugs/php440_notice_bug/phpinfo_gentoo_without_bug.html (this is another gentoo box, completely unrelated to the other) ------------------------------------------------------------------------ [2005-08-05 16:41:18] ast at gmx dot ch Sorry, the first link was incorrect :/ (Coding recommendations) http://gallery.menalto.com/index.php?name=PNphpBB2&file=viewtopic&p=153254#153254 ------------------------------------------------------------------------ [2005-08-05 16:27:54] ast at gmx dot ch Description: ------------ Abstract: ------------------- PHP 4.4.0 shows a "Notice: Only variable references should be returned by reference in ..." Notice when it shouldn't. The bug can only be reproduced with PHP 4.4.0. And it can only be reproduced on a few systems, on most it returns the expected result (all test platforms had error_reporting(E_ALL);). Furthermore, code that seems to be equivalent doesn't result in a Notice. And two different systems with almost the same setup don't show the same results. I couldn't isolate the bug further than this. Maybe it's a compile options issue, maybe it has to do with the scope of variables, I don't know. Disclaimer: ------------------- You may think this is another bogus bug report for the return-by-reference / assign-by-reference / pass-by-reference Notices in PHP 4.4.0. But I'm quite sure it isn't. I've patched our framework and wrote some recommendations on how to code the right way: http://gallery.menalto.com/index.php?name=PNphpBB2&file=viewtopic&t=32907 . But you don't need to follow this link. I just want to point out that this is a real issue. Details: ------------------- Please take a look at the reproduce script. Reproduce code: --------------- http://dev.nei.ch/bugs/php440_notice_bug/php440_notice_bug_on_certain_platforms.phps Expected result: ---------------- Expected result: ---------------- PHP Version is: 4.4.0 no NOTICEs Actual result: -------------- Actual result: -------------- php version is: 4.4.0 Notice: Only variable references should be returned by reference in php440_notice_bug_on_certain_platforms.php on line 23 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34009&edit=1
