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

Reply via email to