Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:29759 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 32629 invoked by uid 1010); 25 May 2007 16:17:50 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 32612 invoked from network); 25 May 2007 16:17:50 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 May 2007 16:17:50 -0000 Authentication-Results: pb1.pair.com header.from=tijnema@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=tijnema@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.132.245 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: tijnema@gmail.com X-Host-Fingerprint: 209.85.132.245 an-out-0708.google.com Received: from [209.85.132.245] ([209.85.132.245:39209] helo=an-out-0708.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id D9/0B-52614-92C07564 for ; Fri, 25 May 2007 12:17:47 -0400 Received: by an-out-0708.google.com with SMTP id c18so233817anc for ; Fri, 25 May 2007 09:17:41 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=QhpBVzlQnhNxSwBmMLSRr+qDMFDWiY3R5rdIdn3sVCcJnxfW0NJXUndfIMbOz84T9Z5my520qSAMuXH6Ul0EL8IKdOqAJRfoECaXWEdjkYX795j3kNhwdQ60IzuN8MfhbjIRVorYLjp0PuwONCZNZ8dVlh7F/YLHyPJjRLD0PBE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=qUFo1KbGPf6hjDw6yooMKznGEk83g2w3+kjkxqEx6iweLT6U3X5Wpcm9Z79k0bQUHkze/c9Bqf77lJMrI2fC8pSsjWwtRyLQDM074uIoKONymQu0ODw6FsBDV8aUrdYEElFiUsWmR8oaCX87J1GEmD1Fh/HpyrcM5sZVtj7vJ5Q= Received: by 10.101.67.8 with SMTP id u8mr2843499ank.1180109861406; Fri, 25 May 2007 09:17:41 -0700 (PDT) Received: by 10.100.43.17 with HTTP; Fri, 25 May 2007 09:17:41 -0700 (PDT) Message-ID: Date: Fri, 25 May 2007 18:17:41 +0200 To: "Rasmus Lerdorf" Cc: "Brian Moon" , internals@lists.php.net In-Reply-To: <4654C4E2.2090301@lerdorf.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <4638E608.2090202@adaniels.nl> <4654A616.7050302@adaniels.nl> <4654BD0A.60903@macvicar.net> <4654C01C.6040600@lerdorf.com> <4654C380.7060206@dealnews.com> <4654C4E2.2090301@lerdorf.com> Subject: Re: [PHP-DEV] Re: Still having lstat trouble From: tijnema@gmail.com (Tijnema) On 5/24/07, Rasmus Lerdorf wrote: > Which filesystems is /tmp on on the various boxes? tmpfs related perhaps? > > -Rasmus Nice idea, but I don't think it's a problem there, I think it's a configuration problem. I've build my own linux, and so I have all configuration like I want. I'm running php-5.2.3RC1 as Apache 2.2.3 module. I've split up my USB stick in a few file systems, and they worked all for me, except for msdos&vfat file systems, as they don't support symlinks. Test results here: http://86.86.80.41/fs_test.php and source for the test is here: http://86.86.80.41/fs_test.phps Tijnema > > Brian Moon wrote: > > Works as expected on my Mac (no strace on my Mac). On my Gentoo 64-bit > > server, I get the wrong data from Apache2 and CLI. On my 32-bit Gentoo > > server, without Apache 2, I get the correct answer from apache and cli. > > On my 32-bit Gentoo server with Apache 2 I get a wrong answer from > > Apache and cli. > > > > We build our PHP on these servers with the same options via emerge. The > > only difference is Apache 2. What the hell? > > > > > > # uname -a > > Linux proxy1 2.6.18-gentoo-r6 #1 SMP Thu Feb 8 07:32:31 EST 2007 x86_64 > > Dual-Core AMD Opteron(tm) Processor 2210 AuthenticAMD GNU/Linux > > > > # php foobar.php > > dir > > not a link > > same > > > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > > access("/tmp/pear", F_OK) = 0 > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 > > readlink("/tmp/link-test", "/tmp/pear", 4096) = 9 > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > > access("/tmp/pear", F_OK) = 0 > > unlink("/tmp/link-test") = 0 > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/link-test", 0x7fff3f48fb70) = -1 ENOENT (No such file or > > directory) > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > > symlink("/tmp/pear", "/tmp/link-test") = 0 > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 > > readlink("/tmp/link-test", "/tmp/pear", 4096) = 9 > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > > lstat("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > > = 0x2b906b634000 > > write(1, "dir", 3dir) = 3 > > write(1, "\n", 1 > > ) = 1 > > write(1, "not a link", 10not a link) = 10 > > write(1, "\n", 1 > > ) = 1 > > lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 > > lstat("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > > stat("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > > write(1, "same", 4same) = 4 > > > > > > 32-bit Gentoo however acts as expected. > > > > $ uname -a > > Linux deadpool 2.6.11-gentoo-r6 #1 SMP Thu Apr 14 07:52:09 EDT 2005 i686 > > Intel(R) Xeon(TM) CPU 3.20GHz GenuineIntel GNU/Linux > > > > php test.php > > link > > link > > differ > > > > > > access("/tmp/pear", F_OK) = 0 > > access("/tmp/link-test", F_OK) = 0 > > unlink("/tmp/link-test") = 0 > > time(NULL) = 1179959743 > > lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=14416, ...}) = 0 > > lstat64("/tmp/link-test", 0xbfff5e4c) = -1 ENOENT (No such file or > > directory) > > time(NULL) = 1179959743 > > lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=14416, ...}) = 0 > > lstat64("/tmp/pear", {st_mode=S_IFDIR|0755, st_size=72, ...}) = 0 > > symlink("/tmp/pear", "/tmp/link-test") = 0 > > lstat64("/tmp/link-test", {st_mode=S_IFLNK|0777, st_size=9, ...}) = 0 > > fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > > 0) = 0xb78b1000 > > 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=72, ...}) = 0 > > write(1, "differ", 6differ) = 6 > > > > > > 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 > >> > > > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >