#45279 [Asn->WFx]: Results of dirname() on paths ending with a /

From: Date: Fri, 01 Aug 2008 14:42:02 +0000
Subject: #45279 [Asn->WFx]: Results of dirname() on paths ending with a /
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-127467@lists.php.net to get a copy of this message
ID: 45279 Updated by: dmitry@php.net Reported By: ralph at deboom dot biz -Status: Assigned +Status: Wont fix Bug Type: Directory function related Operating System: Debian Etch 4.0+ PHP Version: 5.2.6 Assigned To: dmitry New Comment: The current behavior is consistent and it won't be changed, as it may break existent code. Previous Comments: ------------------------------------------------------------------------ [2008-06-20 11:13:41] ralph at deboom dot biz ~_~ Oops, forgot the return $dirname: ------------------------- <?php function __dirname($dirname) { if (substr($dirname, -1, 1) == '/' || substr($dirname, -1, 1) == '\\') { $dirname = dirname($dirname.'.'); } else { $dirname = dirname($dirname); } return $dirname; } ------------------------------------------------------------------------ [2008-06-20 11:12:21] ralph at deboom dot biz Ok super! :) ------------------------------- I got a workaround for the people who are using the older versions: <?php function __dirname($dirname) { if (substr($dirname, -1, 1) == '/' || substr($dirname, -1, 1) == '\\') { $dirname = dirname($dirname.'.'); } else { $dirname = dirname($dirname); } } ------------------------------------------------------------------------ [2008-06-20 08:37:37] pajoye@php.net It may be a BC break to change the behavior now so I would prefer to update the documentation instead. However, after having looked at the code, it seems to be a bug in the implementation (but the BC issue remains). Assigned to Dmitry (on request). ------------------------------------------------------------------------ [2008-06-20 08:04:16] ralph at deboom dot biz Where is the support on this bug...? ------------------------------------------------------------------------ [2008-06-16 10:59:07] ralph at deboom dot biz Description: ------------ Quoted from: http://bugs.php.net/bug.php?id=841 [21 Dec 1998 2:06pm UTC] rasmus The correct operations of these functions should be... dirname returns everything PRIOR to the last / or \ in the path. basename returns everything AFTER the last / or \ in the path. ---------------------------------------------------------------- There are several more people on www.php.net/dirname comments who are confused by this aswell. Reproduce code: --------------- <?php echo dirname('/dir1/dir2/dir3/'); Expected result: ---------------- /dir1/dir2/dir3 Or/And update the docs: www.php.net/dirname Actual result: -------------- /dir1/dir2 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45279&edit=1

« previous php.bugs (#127467) next »