Edit report at http://bugs.php.net/bug.php?id=48361&edit=1
ID: 48361 Updated by: col...@php.net Reported by: petercowburn at gmail dot com Summary: SplFileInfo::getPathinfo no returning info of path -Status: Assigned +Status: Closed Type: Bug Package: SPL related Operating System: OS X PHP Version: 5.3.0RC2 Assigned To: colder New Comment: This bug has been fixed in SVN. 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/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2010-04-27 10:56:03] col...@php.net Automatic comment from SVN on behalf of colder Revision: http://svn.php.net/viewvc/?view=revision&revision=298647 Log: Fixed #48361 (SplFileInfo::getPathName() should return the parent ------------------------------------------------------------------------ [2010-01-27 11:08:37] weirdan at gmail dot com Also behavior has changed since 5.2 (where it at least behaved according to documentation): weir...@virtual-debian:/home/sam/trunk$ php -r 'var_dump(phpversion()); $f = new SplFileInfo("/usr/bin/php5"); $d = $f->getPathInfo(); var_dump($d->getRealPath());' string(8) "5.2.12-2" string(8) "/usr/bin" weir...@virtual-debian:/home/sam/trunk$ sudo update-alternatives --set php /usr/local/php/bin/php # switch to 5.3.1 update-alternatives: using /usr/local/php/bin/php to provide /usr/bin/php (php) in manual mode. weir...@virtual-debian:/home/sam/trunk$ php -r 'var_dump(phpversion()); $f = new SplFileInfo("/usr/bin/php5"); $d = $f->getPathInfo(); var_dump($d->getRealPath());' string(5) "5.3.1" string(13) "/usr/bin/php5" weir...@virtual-debian:/home/sam/trunk$ ls -l /usr/bin/php5 -rwxr-xr-x 1 root root 5261500 Jan 11 19:36 /usr/bin/php5 The likely cause is the 'fix' for the http://bugs.php.net/bug.php?id=45345 (which should have been rejected as RTFM I believe). ------------------------------------------------------------------------ [2009-08-19 15:30:07] tomasz dot kotecki at gmail dot com This could be related... using 5.3.0. Using example from http://uk3.php.net/manual/en/splfileinfo.getpath.php <?php $info = new SplFileInfo('/usr/bin/php'); var_dump($info->getPath()); $info = new SplFileInfo('/usr/'); var_dump($info->getPath());?> expected result: ---------------- string(8) "/usr/bin" string(4) "/usr" actual result: -------------- string(8) "/usr/bin" string(0) "" ------------------------------------------------------------------------ [2009-06-16 22:24:03] petercowburn at gmail dot com I downloaded a recent snap of PHP 5.3 (200906162030) which gives me PHP 5.3.0RC4 and amended the method definition which was using spl_filesystem_object_get_pathname rather than spl_filesystem_object_get_path. With that function name changed, the call to SplFileInfo::getPathInfo now appears to work as expected from the description given in the documentation. Reproduce code: --------------- <?php $info = new SplFileInfo('/usr/bin/php'); $parent_info = $info->getPathInfo(); var_dump($parent_info->getRealPath()); ?> Expected result: ---------------- string(8) "/usr/bin" Actual result: ---------------- string(8) "/usr/bin" Diff file: ---------- Index: spl_directory.c =================================================================== RCS file: /repository/php-src/ext/spl/spl_directory.c,v retrieving revision 1.45.2.27.2.23.2.43 diff -u -u -r1.45.2.27.2.23.2.43 spl_directory.c --- spl_directory.c 4 Jun 2009 14:46:26 -0000 1.45.2.27.2.23.2.43 +++ spl_directory.c 16 Jun 2009 22:13:45 -0000 @@ -1176,7 +1176,7 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == SUCCESS) { int path_len; - char *path = spl_filesystem_object_get_pathname(intern, &path_len TSRMLS_CC); + char *path = spl_filesystem_object_get_path(intern, &path_len TSRMLS_CC); if (path) { spl_filesystem_object_create_info(intern, path, path_len, 1, ce, return_value TSRMLS_CC); } ------------------------------------------------------------------------ [2009-05-22 10:30:21] petercowburn at gmail dot com Description: ------------ It appears that using PHP5.3.0RC2-dev the SplFileInfo::getPathinfo method just returns the SplFileInfo object on which it was called rather than an SplFileInfo object for its path. Reproduce code: --------------- <?php $info = new SplFileInfo('/usr/bin/php'); $parent_info = $info->getPathInfo(); var_dump($parent_info->getRealPath()); ?> Expected result: ---------------- string(8) "/usr/bin" Actual result: -------------- string(12) "/usr/bin/php" ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=48361&edit=1