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:
Addendum from my 3 Mar 1:56pm UTC comment: Whilst php is able to give me the realpath of the script http://localhost/elsewhere/test.php , asking for the realpath of http://localhost/elsewhere in the http://localhost/local/test.php script fails. Previous Comments: ------------------------------------------------------------------------ [2008-03-03 14:17:37] mmichel at chez dot com @jani: typo was in the comment, not in my code. I checked :-) ------------------------------------------------------------------------ [2008-03-03 13:56:32] mmichel at chez dot com @jani: Virtual dir is kind of a symlink handled by IIS rather than the OS. Thus, the document_root for http://localhost/elsewhere/test.php is different from the one for http://localhost/local/test.php Still, browsing to http://localhost/elsewhere works, and executing http://localhost/elsewhere/test.php works. ------------------------------------------------------------------------ [2008-03-03 13:46:00] [EMAIL PROTECTED] . . $check_path=realpath($virt); print ($checkpath === FALSE) ? "virtual dir not recognized<br>" : . . That's your code, note the tiny typo there? :) >From the manual: realpath() returns FALSE on failure, e.g. if the file does not exist. I don't know what these 'Virtual dirs' are in IIS, but I guess they're not _filesystem_ things. realpath() is meant to be used with _filesystem_.. ------------------------------------------------------------------------ [2008-03-03 13:45:05] mmichel at chez dot com 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. ------------------------------------------------------------------------ [2008-03-03 13:39:57] mmichel at chez dot com it returns: string(22) "C:\Inetpub\wwwroot\local" bool(false) ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/44293 -- Edit this bug report at http://bugs.php.net/?id=44293&edit=1