Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:29708 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 90832 invoked by uid 1010); 23 May 2007 22:34:47 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 90817 invoked from network); 23 May 2007 22:34:47 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 May 2007 22:34:47 -0000 Authentication-Results: pb1.pair.com header.from=scottmacvicar@ntlworld.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=scottmacvicar@ntlworld.com; spf=unknown; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain ntlworld.com does not designate 72.36.186.210 as permitted sender) X-PHP-List-Original-Sender: scottmacvicar@ntlworld.com X-Host-Fingerprint: 72.36.186.210 midden.org.uk Received: from [72.36.186.210] ([72.36.186.210:54982] helo=lovelace.midden.org.uk) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id E6/65-52937-581C4564 for ; Wed, 23 May 2007 18:34:46 -0400 Received: from macvicar.demon.co.uk ([80.177.111.173] helo=[192.168.1.101]) by lovelace.midden.org.uk with esmtp (Exim 4.63) (envelope-from ) id 1HqzPk-0001Mz-NX; Wed, 23 May 2007 23:34:41 +0100 Message-ID: <4654C171.3050904@ntlworld.com> Date: Wed, 23 May 2007 23:34:25 +0100 User-Agent: Thunderbird 2.0.0.0 (Windows/20070326) MIME-Version: 1.0 To: Rasmus Lerdorf CC: Arnold Daniels , internals@lists.php.net References: <4638E608.2090202@adaniels.nl> <4654A616.7050302@adaniels.nl> <4654BD0A.60903@macvicar.net> <4654C01C.6040600@lerdorf.com> In-Reply-To: <4654C01C.6040600@lerdorf.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Re: Still having lstat trouble From: scottmacvicar@ntlworld.com (Scott MacVicar) Miscopied, a full strace is: lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 access("/tmp/pear", F_OK) = 0 time(NULL) = 1179959483 lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 readlink("/tmp/link-test", "/tmp/pear", 4096) = 9 lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 access("/tmp/pear", F_OK) = 0 unlink("/tmp/link-test") = 0 time(NULL) = 1179959483 lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/link-test", 0xbff2137c) = -1 ENOENT (No such file or directory) time(NULL) = 1179959483 lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 symlink("/tmp/pear", "/tmp/link-test") = 0 time(NULL) = 1179959483 lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 readlink("/tmp/link-test", "/tmp/pear", 4096) = 9 lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 write(1, "dir", 3dir) = 3 write(1, "\n", 1 ) = 1 write(1, "not a link", 10not a link) = 10 write(1, "\n", 1 ) = 1 time(NULL) = 1179959483 lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 write(1, "same", 4same) = 4 SELinux is disabled on the box. Scott Rasmus Lerdorf wrote: > lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > lstat64("/tmp/link-test", 0xbff229ec) = -1 ENOENT (No such file or > directory) > lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > symlink("/tmp/pear", "/tmp/link-test") = 0 > lstat64("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 > write(1, "link", 4link) = 4 > write(1, "\n", 1 > ) = 1 > write(1, "link", 4link) = 4 > write(1, "\n", 1 > ) = 1 > stat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > write(1, "differ", 6differ) = 6 > > > Scott MacVicar wrote: >> I'm getting similar results from a RHEL 4 box we have here, its running >> 5.2.3-dev. >> >> scott@scarlet [/tmp] # cat /etc/redhat-release >> Red Hat Enterprise Linux ES release 4 (Nahant Update 4) >> >> scott@scarlet [~] # uname -a >> Linux scarlet 2.6.9-42.0.2.ELsmp #1 SMP Thu Aug 17 18:00:32 EDT 2006 >> i686 i686 i386 GNU/Linux >> >> scott@scarlet [/tmp] # php test.php >> dir >> not a link >> same >> >> strace for the during execution is. >> >> lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 >> lstat64("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 > > That means /tmp/link-test exists already, otherwise lstat returns -1. > Here is what I see if the link already exists when I run my script: > > access("/tmp/pear", F_OK) = 0 > access("/tmp/link-test", F_OK) = 0 > unlink("/tmp/link-test") = 0 > lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > lstat64("/tmp/link-test", 0xbff229ec) = -1 ENOENT (No such file or > directory) > lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > symlink("/tmp/pear", "/tmp/link-test") = 0 > lstat64("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 > write(1, "link", 4link) = 4 > write(1, "\n", 1 > ) = 1 > write(1, "link", 4link) = 4 > write(1, "\n", 1 > ) = 1 > stat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > write(1, "differ", 6differ) = 6 > > So did you leave out those access() calls, and did they fail, or did the > unlink() fail perhaps? > > -Rasmus