Edit report at https://bugs.php.net/bug.php?id=59516&edit=1

 ID:                 59516
 Updated by:         s...@php.net
 Reported by:        arimbourg at ariworld dot eu
 Summary:            Call to undefined method finfo::__destruct
-Status:             Open
+Status:             Not a bug
 Type:               Bug
-Package:            Fileinfo
+Package:            *General Issues
 Operating System:   Mandriva 2010 linux free
 PHP Version:        5.3.3.04
 Block user comment: N
 Private report:     N

 New Comment:

Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.

You do not call __destruct directly. Just unset the variable or assign null to 
it.


Previous Comments:
------------------------------------------------------------------------
[2010-11-22 17:28:25] arimbourg at ariworld dot eu

fileinfo functions are back.
Mandriva stores now that extension in a separate package 
(php-fileinfo-5.3.3-0.4mdv2010.1)... I didn't noticed it... sorry.
Now the package is installed and all is well again.
One problem is remaining : no finfo::__destruct method. We can't free the 
resource when using object style fileinfo.
I implemented a class acting like finfo (should).
It's storing the resource and flags in private static variables and using the 
finfo function in the methods :
    __CLASS__::__construct => finfo_open
    __CLASS__::buffer => finfo_buffer
    __CLASS__::file => finfo_file
    __CLASS__::set_flags => finfo_set_flags
    __CLASS__::__destruct => finfo_close

It's working well but I hope I'll be able to use the "native" finfo Class in 
the future...

I notice one more problem : all the FILEINFO constants aren't defined :
PHP Notice:  Use of undefined constant FILEINFO_COMPRESS - assumed 
'FILEINFO_COMPRESS' in /path/to/file.php on line 57

------------------------------------------------------------------------
[2010-11-19 15:01:48] arimbourg at ariworld dot eu

if this can help...
the output for 'pecl version' and 'pear version' commands:

$ pecl version
Warning: Invalid argument supplied for foreach() in Command.php on line 259
Warning: Invalid argument supplied for foreach() in 
/usr/share/pear/PEAR/Command.php on line 259
(repeated 11)

Notice: Undefined index: honorsbaseinstall in Role.php on line 180
(repeated 9)

Notice: Undefined index: installable in Role.php on line 145
(repeated 9)

Notice: Undefined index: phpfile in Role.php on line 212
(repeated 9)

Notice: Undefined index: config_vars in Role.php on line 49
(repeated 9)

Warning: Invalid argument supplied for foreach() in PEAR/Command.php on line 259
Warning: Invalid argument supplied for foreach() in 
/usr/share/pear/PEAR/Command.php on line 259
(repeated 11)
PEAR Version: 1.9.1
PHP Version: 5.3.3
Zend Engine Version: 2.3.0
Running on: Linux HOST 2.6.33.7-desktop586-2mnb #1 SMP Mon Sep 20 18:19:58 UTC 
2010 i686


$ pear version
PEAR Version: 1.9.1
PHP Version: 5.3.3
Zend Engine Version: 2.3.0
Running on: Linux HOST 2.6.33.7-desktop586-2mnb #1 SMP Mon Sep 20 18:19:58 UTC 
2010 i686


Each command I try with PECL give me almost the same output...

------------------------------------------------------------------------
[2010-11-19 14:38:51] arimbourg at ariworld dot eu

I tried using the function finfo_open too... PHP Fatal error: Call to undefined 
function finfo_open() in /path/to/file.php on line #, referer: 
http://referer/url

------------------------------------------------------------------------
[2010-11-19 14:29:35] arimbourg at ariworld dot eu

Yesterday (18 nov) it was the destruct method that didn't exist. Today, PHP was 
updated to version 5.3.3.04 and it's the whole finfo class that have 
disappeared.
I wanted to check if the previous bug was fixed and then I noticed a new error 
: PHP Fatal error: Class 'finfo' not found in /path/to/file.php on line #, 
referer: http://referer/url

------------------------------------------------------------------------
[2010-11-18 13:16:42] arimbourg at ariworld dot eu

Description:
------------
PHP 5.3.3 with Suhosin-Patch (cli) (built: Nov  9 2010 14:49:46) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

Apache mpm prefork
Loaded modules :
  core
  prefork
  http_core
  mod_so mod_authn_file
  mod_authn_anon
  mod_authn_default
  mod_authn_alias
  mod_authz_host
  mod_authz_groupfile
  mod_authz_user
  mod_authz_dbm
  mod_authz_owner
  mod_authz_default
  mod_auth_basic
  mod_auth_digest
  mod_include
  mod_filter
  mod_substitute
  mod_log_config
  mod_env
  mod_mime_magic
  mod_expires
  mod_headers
  mod_usertrack
  mod_unique_id
  mod_setenvif
  mod_version
  mod_mime
  mod_status
  mod_autoindex
  mod_info
  mod_cgi
  mod_vhost_alias
  mod_negotiation
  mod_dir
  mod_imagemap
  mod_actions
  mod_alias
  mod_rewrite
  mod_ssl
  mod_userdir
  mod_php5

Is it really a destructor for PECL Object Oriented usage?
Currently, I can only unset the variable that contain the resource.
Calling __destruct method give a fatal error.


Reproduce code:
---------------
<?php

putenv ('MAGIC=/usr/share/misc/magic.mgc'); //Magic didn't work... other bug...
ini_set ('display_errors', 1);

$finfo = new finfo ();

echo ($finfo->file ('index.php', FILEINFO_MIME) . "\n");

print_r (get_class_methods ('finfo')); // no __destruct method

$finfo->__destruct (); // Error !!
// finfo::__destruct () : Error too... as expected

?>

Expected result:
----------------
text/x-php; charset=utf-8
Array (
    [0] => finfo
    [1] => set_flags
    [2] => file
    [3] => buffer
    [4] => __destruct
)


Actual result:
--------------
text/x-php; charset=utf-8
Array (
    [0] => finfo
    [1] => set_flags
    [2] => file
    [3] => buffer
)
Fatal error: Call to undefined method finfo::__destruct() in /path/to/file.php 
on line 12


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=59516&edit=1

Reply via email to