ID: 44293 User updated by: mmichel at chez dot com Reported By: mmichel at chez dot com Status: Open Bug Type: Filesystem function related Operating System: Win2003 PHP Version: 5.2.5 New Comment:
Moreover: On this page http://php.uli.it/manual/hk/function.realpath.php a comment provides this: =8<================================================================= This is a modified version of the code written by Dave, wich finds the absolute path of a virtual path, this function returns the absolute path, If you have php running on IIS Plataform you could find this very usefull function mappath2($path) { //this here bellow trims the last / in case it has it If ($path{strlen($path)-1}=="/"){ $path = substr($path,0, strlen($path)-1); } $relative = str_repeat('../',substr_count($path,'/')-1); // transforms virtual or relative path to an absolute path return realpath(substr($path,0,1)=='/' ? $relative.substr($path,1) : $path); } the implementation would be like this having $imagepath = "/website001/images/catalog/"; $realpath = mappath2($imagepath); The result in $realpath would be something like C:\Inetpub\wwwroot\website001\images\catalog =8<================================================================= I tried the function and it did not worked. Previous Comments: ------------------------------------------------------------------------ [2008-03-03 13:39:57] mmichel at chez dot com it returns: string(22) "C:\Inetpub\wwwroot\local" bool(false) ------------------------------------------------------------------------ [2008-03-03 13:04:43] [EMAIL PROTECTED] What does this script output: <?php $local='./local'; $virt='./elsewhere'; var_dump(realpath($local)); var_dump(realpath($virt)); ?> ------------------------------------------------------------------------ [2008-02-29 15:46:00] mmichel at chez dot com Description: ------------ If you do a realpath('./elsewhere'), where elsewhere is a IIS virtual directory, realpath return FALSE. Reproduce code: --------------- - Use the default site in IIS6 (root=c:\inetpub\wwwroot) - in the root directory create a folder called local - Create a virtual directory (either via a network share or in another path on a local drive, e.g. C:\Elsewhere), and call it elsewhere then <?php $local='./local'; $virt='./elsewhere'; $check_path=realpath($local); print ($checkpath === FALSE) ? "local path not resolved<br>" : "local=$check_path<br>"; $check_path=realpath($virt); print ($checkpath === FALSE) ? "virtual dir not recognized<br>" : "virtual=$check_path<br>"; ?> Expected result: ---------------- local=C:\Inetpub\wwwroot\local virtual=C:\Elsewhere Actual result: -------------- local=C:\Inetpub\wwwroot\local virtual= Note that realpath does not return FALSE... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=44293&edit=1