php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #19033 win32 snapshots broken / set_error_handler() to accepts object/method tuple
Submitted: 2002-08-22 03:23 UTC Modified: 2002-10-18 16:33 UTC
From: cyberwombat at yifan dot net Assigned:
Status: Closed Package: Program Execution
PHP Version: 4CVS-2002-10-12 OS: Windows
Private report: No CVE-ID: None
 [2002-08-22 03:23 UTC] cyberwombat at yifan dot net
set_error_handler should accept a method/object pair for OO error 
handling.  Bug 9155 had the same thing. It said it was fixed (sometimes 
mid-2001) However it does not seem to work and the code does not 
appear to me to accept a  object/method pair 
 
Joshua 

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-08-22 08:35 UTC] sander@php.net
Works fine for me. You have to supply an array containing an object reference and a method name. I've added a note about this to the manual.
 [2002-08-26 19:14 UTC] cyberwombat at yifan dot net
Please provide an example and PHP version you are using. I am on 4.2.1 
and have tried every conceivable combinations of object/method and none 
work.  
$error  = new ErrorHandler(); 
Ex:  $old=set_error_handler(array(&$error, "error_handler_method")); 
and vice versa only returns false. The method indicated has been tested 
outside of a class and works perfectly.
 [2002-10-09 13:22 UTC] gandalf at mozillapl dot org
I still recive this bug.
I'm unable to do this:

$old=set_error_handler(array($error, "ErrorHandler"));

(from outside the class)
or this:

$old=set_error_handler(array($this, "ErrorHandler"));
(from inside)

I'm using PHP 4.2.3 for Windows
 [2002-10-10 02:57 UTC] mfischer@php.net
This bug has been fixed in CVS.

In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at http://snaps.php.net/.
 
In case this was a documentation problem, the fix will show up soon at
http://www.php.net/manual/.

In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites in short time.
 
Thank you for the report, and for helping us make PHP better.


 [2002-10-10 04:20 UTC] gandalf at alladyn dot art dot pl
I downloaded Yesterdays "laststable" version, and bug is still in. When it was fixed?
 [2002-10-10 05:50 UTC] mfischer@php.net
In CVS, development snapshot is available at http://snaps.php.net/php4-latest.tar.bz2

From the ChangeLog:
2002-06-12  Andrei Zmievski  <andrei@php.net>

    * NEWS:

    set_error_handler() should take methods as callbacks. Also fixed it to report
    invalid callbacks.
 [2002-10-10 10:00 UTC] gandalf at alladyn dot art dot pl
I downloaded this: http://snaps.php.net/win32/php4-win32-latest.zip

And it still doesnt work.
<?
class Test{
	function ErrorHandler($a,$b){
		print("Error Handled");
	}
}
$error=new Test();
print("AA".$fafa);
set_error_handler('$error->ErrorHandler');
print("AA".$fafa);
?>

This bug should be probably reopened
 [2002-10-10 10:29 UTC] cynic@php.net
i have not tested it, but presumably the interface is the same as for call_user_func()

 [2002-10-10 10:31 UTC] mfischer@php.net
He's simply using the wrong syntax.

The syntax is either

  array($obj, 'method');

or

  array('class', 'method');

so this makes

set_error_handler(array($obj, 'method'));
 [2002-10-10 10:34 UTC] gandalf at alladyn dot art dot pl
<?
class Test{
	function ErrorHandler($a,$b){
		print("Error Handled");
	}
}
$error=new Test();
print("AA".$fafa);
set_error_handler(array($error, 'ErrorHandler'));
print("AA".$fafa);
?>

Result:

------------------------------------
Notice: Undefined variable: fafa in E:\server\www\sports\futur\test.phtml on line 8
AA
Notice: Array to string conversion in E:\server\www\sports\futur\test.phtml on line 9

Notice: Undefined variable: fafa in E:\server\www\sports\futur\test.phtml on line 10
AA
------------------------------------

Sp - still doesnt work
 [2002-10-10 10:44 UTC] cynic@php.net
works fine for me with a 2 days old HEAD. you're doing something wrong.

roman@freepuppy ~ 1005:0 > php -v
PHP 4.4.0-dev (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.4.0, Copyright (c) 1998-2002 Zend Technologies
roman@freepuppy ~ 1006:1 > tmp/scratch2

Notice: Undefined variable:  fafa in /usr/home/roman/tmp/scratch2 on line 13
AAError Handled
roman@freepuppy ~ 1007:0 > uname -sr
FreeBSD 4.7-RC
roman@freepuppy ~ 1008:0 > < tmp/scratch2
#!/usr/bin/env php
<?

    error_reporting(E_ALL);

    class Test
    {
        function ErrorHandler($a,$b)
        {
            print("Error Handled\n");
        }
    }
    $error=new Test();
    print("AA".$fafa);
    set_error_handler(array($error, 'ErrorHandler'));
    print("AA".$fafa);

roman@freepuppy ~ 1009:0 > 


 [2002-10-10 10:55 UTC] mfischer@php.net
Verified:
linux works

Win32 snapshot from snaps.php.net seems to be b0rked.

Can't check out CVS HEAD and test (besides that it's currently broken because of some recent changes).

Reopening and thanks for insisting it doesn't work ;-)
 [2002-10-10 11:00 UTC] cynic@php.net
OS update.

 [2002-10-10 17:50 UTC] sniper@php.net
Making this critical and assigned to edin.

 [2002-10-11 08:22 UTC] edink@php.net
Windows build was broken since Oct 7, so no new snapshots were generated. Now that has been fixed, so could you please try the latest snapshot?
 [2002-10-12 04:39 UTC] alladyn at alladyn dot art dot pl
Confirming. Newest Windows snapshot works OK.
Thanks for fixing this bug.
 [2002-10-12 04:43 UTC] sander@php.net
Closing then.
 [2002-10-12 08:53 UTC] gandalf at alladyn dot art dot pl
Sorry to say, but it has to be reopened once more.
This trunk works strange. Sometimes handler works, but in most situations it doesnt.
 I'm working with big part of code, and there i first time saw that sometimes handler doesnt work. Then i was trying to create tescase, and could not. Finaly i created test file, copied code from my comment and it's not working now.

-------------------------------------------
Notice: Undefined variable: fafa in E:\server\www\sports\futur\test.phtml on line 8
AA
Notice: Undefined variable: fafa in E:\server\www\sports\futur\test.phtml on line 10
AA
-------------------------------------------

After Apache restart it worked once or twice.
After few reloads bug appeard.

Try to reproduce. Just reload part of code few times.

PHP dev 4.3.0
Apache 2.43
Windows 2000
 [2002-10-12 09:44 UTC] sander@php.net
Reopening, status->critical.
 [2002-10-12 10:01 UTC] sniper@php.net
Reopen only if you can confirm something..this is closed.
(most likely not using recent enough snapshot and has installed it wrong)


 [2002-10-12 10:40 UTC] gandalf at alladyn dot art dot pl
I installed version from http://snaps.php.net/win32/php4-win32-latest.zip 2 minutes ago.
Same thing. 
Sometimes it works, usually not. Few times it worked after apache restart, few times after changing list of function attributes...
 [2002-10-14 02:43 UTC] mfischer@php.net
Re-opening, not critical.

However to track this down we need some reproduceable script I think.

Updated Version.
 [2002-10-14 08:39 UTC] gandalf at alladyn dot art dot pl
Yes. Thats what makes this bug so hard to prove. I can only write about what i see. As i wrote, i see some unregular problem.

I can only write about my suspicions. It looks like, not every time handler "catches" relation. Alomst always, first time after apache2+php starts handler works, after second or third try it stops, and then after 20-30 reloads one or twice it works.

Only thing i can do is send You avi with captured this issue. Or, if PHP has any Profile collector, i could create log from PHP's work.
 [2002-10-14 17:28 UTC] sniper@php.net
You should try using apache 1.3.27 which actually works.
Apache2 is way too unstable and not ready for any production use anyway. If this happens also with Apache 1.3.27, then
it's really something that needs to be looked into..

 [2002-10-16 09:15 UTC] gandalf at alladyn dot art dot pl
I chenged Apache to Apache 1.3.27.
Still this bug, but i found something which might be helpfull.
I'm using Mozilla browser (http://mozilla.org). Mozilla has two different methods for "reload" page. One is (well known from IE) ctrl+r, and second is ctrl+shift+r.
First, works like reload in IE, second is "hard" reload. No matter if anything changed, full page is reloaded.

When i'm using ctrl+r on a test.phtml i see handler not working, when i'm using ctrl+shift+r handler works.

Will it help You determinating what is happening?
 [2002-10-18 16:33 UTC] sniper@php.net
To: gandalf@alladyn.art.pl 
Other people said this is fixed so I suspect you've just  
done that usual mistake and haven't installed PHP correctly. 
Mainly the file php4ts.dll comes to my mind..

If you can prove that there really is bug in _PHP_, then
please open a new bug report with proper information such
as short example script..

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Jul 22 14:01:29 2024 UTC