#50159 [Asn->Csd]: wrong working directory in symlinked files
| From: | dmitry@php.net | Date: | Mon, 30 Nov 2009 14:21:38 +0000 |
| Subject: | #50159 [Asn->Csd]: wrong working directory in symlinked files | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-145215@lists.php.net to get a copy of this message | ||
ID: 50159
Updated by: dmitry@php.net
Reported By: cweiske@php.net
-Status: Assigned
+Status: Closed
Bug Type: Scripting Engine problem
Operating System: *
PHP Version: 5.3.1RC3
-Assigned To: srinatar
+Assigned To: dmitry
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:
------------------------------------------------------------------------
[2009-11-30 14:21:23] svn@php.net
Automatic comment from SVN on behalf of dmitry
Revision: http://svn.php.net/viewvc/?view=revision&revision=291496
Log: Fixed bug #50159 (wrong working directory in symlinked files)
------------------------------------------------------------------------
[2009-11-22 17:58:11] cweiske@php.net
@srinatar@php.net:
Applying that patch to 5.3.1 fixes the problem for me!
------------------------------------------------------------------------
[2009-11-18 09:46:11] srinatar@php.net
hi,
in my quick investigation, i think the issue is we are doing chdir to
the absolute path of given uri (which is a change in behavior compared
to 5.2).
here is a rough draft like patch that seems to alleviate this problem.
[sriramn@tim-vm2]'PHP_5_3'>svn diff main/fopen_wrappers.c
Index: main/fopen_wrappers.c
===================================================================
--- main/fopen_wrappers.c (revision 290898)
+++ main/fopen_wrappers.c (working copy)
@@ -386,7 +386,7 @@
#ifndef PHP_WIN32
struct stat st;
#endif
- char *path_info, *filename;
+ char *path_info, *filename, *orig_filename;
int length;
filename = SG(request_info).path_translated;
@@ -455,6 +455,7 @@
} /* if doc_root && path_info */
if (filename) {
+ orig_filename = estrdup(filename);
filename = zend_resolve_path(filename,
strlen(filename) TSRMLS_CC);
}
@@ -488,8 +489,15 @@
STR_FREE(SG(request_info).path_translated); /* for same
reason as above */
SG(request_info).path_translated = filename;
- file_handle->filename = SG(request_info).path_translated;
- file_handle->free_filename = 0;
+ if (orig_filename) {
+ file_handle->filename = orig_filename;
+ file_handle->free_filename = 1;
+ }
+ else {
+ file_handle->filename =
SG(request_info).path_translated;
+ file_handle->free_filename = 0;
+ }
+
file_handle->handle.fp = fp;
file_handle->type = ZEND_HANDLE_FP;
applying this patch , seems to work. af course, more thought need to
go on this before this can be committed.
------------------------------------------------------------------------
[2009-11-13 08:36:53] jani@php.net
So no need to ask Dmitry then. :)
------------------------------------------------------------------------
[2009-11-12 22:24:59] cweiske@php.net
I reverted
<@Jani_> svn diff -r263054:263055
with patch -R, but that did not help. I still get the symlink directory
reported when running <?php echo getcwd(); ?>
------------------------------------------------------------------------
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/50159
--
Edit this bug report at http://bugs.php.net/?id=50159&edit=1