Edit report at https://bugs.php.net/bug.php?id=60218&edit=1
ID: 60218 User updated by: yohgaki at ohgaki dot net Reported by: yohgaki at ohgaki dot net Summary: dir() is missing Status: Open Type: Bug Package: Unknown/Other Function Operating System: Linux x86_64 PHP Version: 5.4SVN-2011-11-04 (SVN) Block user comment: N Private report: N New Comment: dir is ancient class in PHP, so it may be the first one. It may be related. Just my guess. Previous Comments: ------------------------------------------------------------------------ [2011-11-04 14:06:43] yohgaki at ohgaki dot net s/I support dir()/I suppose dir()/ ------------------------------------------------------------------------ [2011-11-04 14:02:52] yohgaki at ohgaki dot net Description: ------------ I support dir() support is not dropped. http://jp.php.net/manual/en/class.dir.php At first, I noticed this issue on Scientific Linux 6's PHP and not with my Linux box. I though they have patched something for it, but I found it can happen with my Linux box, too. This happens in PHP 5.3.3, PHP 5.3.8 and php-src-5.4 at least. This may not be 100% reproducible, but I think chances are high in SL6. PHP may be destroying class entry. I'm not sure following valgrind result may help or not, but "echo 1" don't report any leak. $ USE_ZEND_ALLOC=0 valgrind --leak-check=full ./php -r '$o = new Dir(".");' ==24918== Memcheck, a memory error detector ==24918== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==24918== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==24918== Command: ./php -r $o\ =\ new\ Dir("."); ==24918== PHP Fatal error: Class 'Dir' not found in Command line code on line 1 Fatal error: Class 'Dir' not found in Command line code on line 1 ==24918== ==24918== HEAP SUMMARY: ==24918== in use at exit: 724 bytes in 6 blocks ==24918== total heap usage: 15,100 allocs, 15,094 frees, 3,101,573 bytes allocated ==24918== ==24918== 724 (240 direct, 484 indirect) bytes in 1 blocks are definitely lost in loss record 6 of 6 ==24918== at 0x4A05FDE: malloc (vg_replace_malloc.c:236) ==24918== by 0x7A6845: _emalloc (zend_alloc.c:2423) ==24918== by 0x782E75: compile_string (zend_language_scanner.l:717) ==24918== by 0x7CDC99: zend_eval_stringl (zend_execute_API.c:1181) ==24918== by 0x7CE00D: zend_eval_stringl_ex (zend_execute_API.c:1240) ==24918== by 0x7CE097: zend_eval_string_ex (zend_execute_API.c:1251) ==24918== by 0x93C6E1: do_cli (php_cli.c:1023) ==24918== by 0x93D625: main (php_cli.c:1356) ==24918== ==24918== LEAK SUMMARY: ==24918== definitely lost: 240 bytes in 1 blocks ==24918== indirectly lost: 484 bytes in 5 blocks ==24918== possibly lost: 0 bytes in 0 blocks ==24918== still reachable: 0 bytes in 0 blocks ==24918== suppressed: 0 bytes in 0 blocks ==24918== ==24918== For counts of detected and suppressed errors, rerun with: -v ==24918== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 6 from 6) ********************************************************************** $ USE_ZEND_ALLOC=0 valgrind --leak-check=full ./php -r "echo 1;" ==28266== Memcheck, a memory error detector ==28266== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==28266== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==28266== Command: ./php -r echo\ 1; ==28266== 1==28266== ==28266== HEAP SUMMARY: ==28266== in use at exit: 0 bytes in 0 blocks ==28266== total heap usage: 15,078 allocs, 15,078 frees, 3,099,330 bytes allocated ==28266== ==28266== All heap blocks were freed -- no leaks are possible ==28266== ==28266== For counts of detected and suppressed errors, rerun with: -v ==28266== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 6 from 6) Test script: --------------- php -r '$o = new Dir(".");' Expected result: ---------------- PHP should not complain Actual result: -------------- Fatal error: Class 'Dir' not found in Command line code on line 1 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=60218&edit=1