ID: 44293
Updated by: jani@php.net
Reported By: mmichel at chez dot com
-Status: Open
+Status: Feedback
Bug Type: Filesystem function related
Operating System: Win2003
PHP Version: 5.2.5
New Comment:
Try adding the trailing slash in the directory..
Previous Comments:
------------------------------------------------------------------------
[2008-03-03 14:31:58] mmichel at chez dot com
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.
------------------------------------------------------------------------
[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] jani@php.net
.
.
$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.
------------------------------------------------------------------------
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