Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:29707 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 88520 invoked by uid 1010); 23 May 2007 22:28:55 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 88504 invoked from network); 23 May 2007 22:28:54 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 May 2007 22:28:54 -0000 Authentication-Results: pb1.pair.com header.from=rasmus@lerdorf.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=rasmus@lerdorf.com; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain lerdorf.com from 204.11.219.139 cause and error) X-PHP-List-Original-Sender: rasmus@lerdorf.com X-Host-Fingerprint: 204.11.219.139 mail.lerdorf.com Received: from [204.11.219.139] ([204.11.219.139:47283] helo=mail.lerdorf.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 39/15-52937-620C4564 for ; Wed, 23 May 2007 18:28:54 -0400 Received: from trainburn-lm-corp-yahoo-com.local (c-24-6-22-164.hsd1.ca.comcast.net [24.6.22.164]) (authenticated bits=0) by mail.lerdorf.com (8.14.1/8.14.1/Debian-2) with ESMTP id l4NMSlkQ008588 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 23 May 2007 15:28:48 -0700 Message-ID: <4654C01C.6040600@lerdorf.com> Date: Wed, 23 May 2007 15:28:44 -0700 User-Agent: Thunderbird 2.0.0.0 (Macintosh/20070326) MIME-Version: 1.0 To: Scott MacVicar CC: Arnold Daniels , internals@lists.php.net References: <4638E608.2090202@adaniels.nl> <4654A616.7050302@adaniels.nl> <4654BD0A.60903@macvicar.net> In-Reply-To: <4654BD0A.60903@macvicar.net> X-Enigmail-Version: 0.95.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.90.2/3288/Wed May 23 12:56:54 2007 on colo.lerdorf.com X-Virus-Status: Clean Subject: Re: [PHP-DEV] Re: Still having lstat trouble From: rasmus@lerdorf.com (Rasmus Lerdorf) 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