Edit report at http://bugs.php.net/bug.php?id=52312&edit=1
ID: 52312
Comment by: v dot damore at gmail dot com
Reported by: v dot damore at gmail dot com
Summary: PHP lstat problem
Status: Feedback
Type: Bug
Package: Safe Mode/open_basedir
Operating System: Linux
PHP Version: 5.2.13
New Comment:
There is a interesting update, I have found CWDG define so now we have:
(gdb) print cwd_globals.realpath_cache_size_limit
$3 = 0
Probably you should check why realpath_cache_size_limit is equal to 0
Previous Comments:
------------------------------------------------------------------------
[2010-07-13 01:30:24] v dot damore at gmail dot com
After having set breakpoint tsrm_realpath_r and I have execute step by
step debug.
I think is interesting that after execution tsrm_virtual_cwd.c of line
681 execution continue on line 890.
gdb) break tsrm_realpath_r
Breakpoint 1 at 0x2b0b3c9f2702: file
/usr/local/sitipersonali/sitipersonali01/NSP_SERVICE/strillo/sources/php-5.3.2/TSRM/tsrm_virtual_cwd.c,
line 611.
(gdb) continue
Continuing.
Breakpoint 1, tsrm_realpath_r (path=0x7fffddfb32b0
"/usr/local/myspace/webspace/httpdocs/test.php", start=1, len=45,
ll=0x7fffddfb32ac, t=0x7fffddfb32a0, use_realpath=2, is_dir=0,
link_is_dir=0x0)
at
/usr/local/sitipersonali/sitipersonali01/NSP_SERVICE/strillo/sources/php-5.3.2/TSRM/tsrm_virtual_cwd.c:611
611 int directory = 0;
(gdb) step
624 if (len <= start) {
(gdb) step
628 i = len;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
630 i--;
(gdb) step
629 while (i > start && !IS_SLASH(path[i-1])) {
(gdb) step
633 if (i == len ||
(gdb) step
639 } else if (i == len - 2 && path[i] == '.' && path[i+1]
== '.') {
(gdb) step
677 path[len] = 0;
(gdb) step
679 save = (use_realpath != CWD_EXPAND);
(gdb) step
681 if (start && save && CWDG(realpath_cache_size_limit)) {
(gdb) watch save
Hardware watchpoint 2: save
(gdb) print save
$1 = 1
(gdb) print start
$2 = 1
(gdb) print realpath_cache_size_limit
No symbol "realpath_cache_size_limit" in current context.
(gdb) step
890 if (save && lstat(path, &st) < 0) {
(gdb)
------------------------------------------------------------------------
[2010-07-13 00:59:44] [email protected]
Set a bp and step through tsrm_realpath_r and figure out why it isn't
getting to
the realptath_cache_find() call there. Seems like it should be getting
there from
the backtraces.
------------------------------------------------------------------------
[2010-07-13 00:52:21] v dot damore at gmail dot com
Please also note that realpath_cache_size and realpath_cache_ttl are
currently set to following values:
[r...@svilpar4 ~]# curl http://damorealt.xoom.it/phpinfo.php | grep
real
<tr><td class="e">realpath_cache_size</td><td class="v">1024k</td><td
class="v">1024k</td></tr>
<tr><td class="e">realpath_cache_ttl</td><td class="v">600</td><td
class="v">600</td></tr>
------------------------------------------------------------------------
[2010-07-13 00:47:13] v dot damore at gmail dot com
I have executed script:
<pre>
<?php
var_dump(realpath_cache_get());
?>
</pre>
[r...@svilpar4 ~]# curl http://damorealt.xoom.it/test.php
<pre>
array(0) {
}
</pre>
------------------------------------------------------------------------
[2010-07-13 00:38:32] v dot damore at gmail dot com
Please note, gdb output I sent is related to third time I have called
curl http://damorealt.xoom.it/test.php
I have set break point as requested:
(gdb) break realpath_cache_find
Breakpoint 1 at 0x2b0b3c9f254d: file
/usr/local/sitipersonali/sitipersonali01/NSP_SERVICE/strillo/sources/php-5.3.2/TSRM/tsrm_virtual_cwd.c,
line 560.
(gdb) bt
#0 0x000000391760db00 in __accept_nocancel () from
/lib64/libpthread.so.0
#1 0x00002b0b3c1f4544 in apr_socket_accept () from
/usr/lib64/libapr-1.so.0
#2 0x00000000004562e5 in unixd_accept ()
#3 0x0000000000454006 in child_main ()
#4 0x000000000045416c in make_child ()
#5 0x0000000000454701 in ap_mpm_run ()
#6 0x00000000004220ef in main ()
(gdb) continue
Continuing.
During test call gdb as not broken execution.
Function realpath_cache_find is not called.
------------------------------------------------------------------------
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/bug.php?id=52312
--
Edit this bug report at http://bugs.php.net/bug.php?id=52312&edit=1