ID: 13083 Updated by: sander Reported By: [EMAIL PROTECTED] Status: Open Bug Type: *URL Functions Operating System: FreeBSD 4.3 PHP Version: 4.0.6 New Comment: Reproduced with 4.0.6 on Win2K. It seems that fopen can only handle trailing-slash redirects on directories. Example: fopen("http://www.domain.com/some_dir", "r"); works, you're redirected to http://www.domain.com/some_dir/ but fopen("http://www.php.net/fopen", "r"); does NOT work, you're NOT redirected to http://www.php.net/manual/en/function.fopen.php Previous Comments: ------------------------------------------------------------------------ [2001-08-31 13:41:34] [EMAIL PROTECTED] fopen does not handle redirecting URL. For example: "http://www.xanthus.net" redirects to "http://www.xanthus.net/Current". $fopen = fopen("http://www.xanthus.net", "r"); // Does not work $fopen = fopen("http://www.xanthus.net/Current", "r"); //Does work This first example redirects to the second examples URL. I was using php Version 4.0.6, but upgraded to PHP Version 4.0.8-dev hoping this would solve the problem. Here's my configure script options: './configure' '--with-mysql' '--with-gd=/usr/local/' '--with-pgsql' '--enable-inline-optimization' '--with-apxs' '--enable-versioning' '--with-gettext' Here's an strace output when running via a command line: strace ./tmp.tmp execve("./tmp.tmp", ["./tmp.tmp"], [/* 17 vars */]) = 0 __sysctl([hw.pagesize], 2, "\0\20\0\0", [4], NULL, 0) = 0 mmap(0, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0x2813e000 geteuid(0xbfbffbe8) = 0 getuid() = 0 (euid 0) getegid(0xbfbffbe8) = 0 getgid() = 0 (egid 0) open("/var/run/ld-elf.so.hints", O_RDONLY) = 3 read(3, "Ehnt\1\0\0\0\200\0\0\0a\0\0\0\0\0\0\0`\0\0\0\0\0\0\0\0"..., 128) = 128 lseek(3, 128, SEEK_SET) = 128 read(3, "/usr/lib:/usr/lib/compat:/usr/X1"..., 97) = 97 close(3) = 0 access("/usr/lib/libpam.so.1", F_OK) = 0 open("/usr/lib/libpam.so.1", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=34588, ...}) = 0 read(3, "\177ELF\1\1\1\tFreeBSD\0\3\0\3\0\1\0\0\0\344\30\0\0004"..., 4096) = 4096 mmap(0, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x28146000 mmap(0x2814e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7000) = 0x2814e000 close(3) = 0 access("/usr/lib/libcrypt.so.2", F_OK) = 0 open("/usr/lib/libcrypt.so.2", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=11680, ...}) = 0 read(3, "\177ELF\1\1\1\tFreeBSD\0\3\0\3\0\1\0\0\0\304\7\0\0004\0"..., 4096) = 4096 mmap(0, 86016, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2814f000 mmap(0x28152000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x28152000 mmap(0x28153000, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0x28153000 close(3) = 0 access("/usr/lib/libm.so.2", F_OK) = 0 open("/usr/lib/libm.so.2", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=118928, ...}) = 0 read(3, "\177ELF\1\1\1\tFreeBSD\0\3\0\3\0\1\0\0\0\2302\0\0004\0"..., 4096) = 4096 mmap(0, 110592, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x28164000 mmap(0x2817b000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x16000) = 0x2817b000 close(3) = 0 access("/usr/lib/libc.so.4", F_OK) = 0 open("/usr/lib/libc.so.4", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=561580, ...}) = 0 read(3, "\177ELF\1\1\1\tFreeBSD\0\3\0\3\0\1\0\0\0\274*\1\0004\0"..., 4096) = 4096 mmap(0, 614400, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2817f000 mmap(0x281fc000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7c000) = 0x281fc000 mmap(0x28201000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0x28201000 close(3) = 0 sigaction(SIGILL, {0x2812f084, [], 0}, {SIG_DFL}) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 sigaction(SIGILL, {SIG_DFL}, NULL) = 0 sigprocmask(SIG_BLOCK, ~[ILL TRAP ABRT EMT FPE BUS SEGV SYS], []) = 0 sigprocmask(SIG_SETMASK, [], NULL) = 0 sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 readlink("/etc/malloc.conf", 0xbfbff9b0, 63) = -1 ENOENT (No such file or directory) mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0x28215000 break(0x814b000) = 0 break(0x814c000) = 0 break(0x814d000) = 0 break(0x814e000) = 0 break(0x814f000) = 0 break(0x8150000) = 0 break(0x8151000) = 0 open("./php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/lib/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) break(0x8152000) = 0 break(0x8153000) = 0 break(0x8154000) = 0 break(0x8155000) = 0 break(0x8156000) = 0 break(0x8157000) = 0 break(0x8158000) = 0 break(0x8159000) = 0 break(0x815a000) = 0 break(0x815b000) = 0 break(0x815c000) = 0 break(0x815d000) = 0 break(0x815e000) = 0 break(0x815f000) = 0 break(0x8160000) = 0 break(0x8161000) = 0 break(0x8162000) = 0 break(0x8163000) = 0 break(0x8164000) = 0 break(0x8165000) = 0 break(0x8166000) = 0 break(0x8167000) = 0 break(0x8168000) = 0 break(0x8169000) = 0 break(0x816a000) = 0 break(0x816b000) = 0 break(0x816c000) = 0 break(0x816d000) = 0 break(0x816e000) = 0 open("/etc/protocols", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=5770, ...}) = 0 break(0x8170000) = 0 read(3, "#\n# Internet protocols\n#\n# $Free"..., 8192) = 5770 close(3) = 0 open("/etc/protocols", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=5770, ...}) = 0 read(3, "#\n# Internet protocols\n#\n# $Free"..., 8192) = 5770 close(3) = 0 break(0x8171000) = 0 break(0x8172000) = 0 open("/etc/services", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=72301, ...}) = 0 break(0x8174000) = 0 read(3, "#\n# Network services, Internet s"..., 8192) = 8192 read(3, "TSAP Class 0\niso-tsap\t102/udp\t "..., 8192) = 8192 read(3, "ing\t\t\nat-3\t\t203/tcp\t #AppleTal"..., 8192) = 8192 read(3, "s\nups\t\t401/tcp\t #Uninterruptib"..., 8192) = 8192 read(3, "in\t534/udp\t #MegaMedia Admin\ni"..., 8192) = 8192 read(3, "tl_bootc\t1068/tcp #Installatio"..., 8192) = 8192 read(3, "\t\t1429/tcp #Hypercom NMS\t\t "..., 8192) = 8192 read(3, "\t1534/udp\nampr-info\t1535/tcp\namp"..., 8192) = 8192 read(3, "33/udp #DEC Notes\nrsvp-encap\t3"..., 8192) = 6765 read(3, "", 8192) = 0 close(3) = 0 break(0x8175000) = 0 break(0x8176000) = 0 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0 sigaction(SIGPROF, {0x80c84c4, [], SA_RESTART}, {SIG_DFL}) = 0 sigprocmask(SIG_UNBLOCK, [PROF], NULL) = 0 break(0x8177000) = 0 break(0x8178000) = 0 break(0x8179000) = 0 gettimeofday({999280505, 782090}, NULL) = 0 getpid() = 27412 (ppid 27411) getpid() = 27412 (ppid 27411) open("./tmp.tmp", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0755, st_size=1961, ...}) = 0 chdir(".") = 0 fstat(3, {st_mode=S_IFREG|0755, st_size=1961, ...}) = 0 break(0x817b000) = 0 read(3, "#!/usr/local/bin/php -q\n<?php\n\n/"..., 8192) = 1961 sigprocmask(SIG_BLOCK, NULL, []) = 0 break(0x8180000) = 0 ioctl(3, TIOCGETA, 0xbfbfe948) = -1 ENOTTY (Inappropriate ioctl for device) break(0x8181000) = 0 read(3, "", 8192) = 0 break(0x8182000) = 0 break(0x8186000) = 0 break(0x8196000) = 0 ioctl(3, TIOCGETA, 0xbfbfd994) = -1 ENOTTY (Inappropriate ioctl for device) break(0x819b000) = 0 close(3) = 0 gettimeofday({999280505, 790040}, NULL) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(5, 3), ...}) = 0 ioctl(1, TIOCGETA, {B9600 opost isig icanon echo ...}) = 0 write(1, "<br>\n", 5<br> ) = 5 write(1, "<b>Warning</b>: Cannot send ses"..., 108<b>Warning</b>: Cannot send session cookie - headers already sent in <b>./tmp.tmp</b> on line <b>5</b><br> ) = 108 write(1, "<br>\n", 5<br> ) = 5 write(1, "<b>Warning</b>: Cannot send ses"..., 147<b>Warning</b>: Cannot send session cache limiter - headers already sent (output started at ./tmp.tmp:5) in <b>./tmp.tmp</b> on line <b>5</b><br> ) = 147 open("/tmp/sess_29d5f30bc92aebe0054e94cce089a4e0", O_RDWR) = -1 ENOENT (No such file or directory) open("/tmp/sess_29d5f30bc92aebe0054e94cce089a4e0", O_RDWR|O_CREAT|O_EXCL, 0600) = 3 flock(3, LOCK_EX) = 0 fstat(3, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0 lseek(3, 0, SEEK_SET) = 0 read(3, "", 0) = 0 gettimeofday({999280505, 809447}, NULL) = 0 open("/etc/host.conf", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=205, ...}) = 0 read(4, "# $FreeBSD: src/etc/host.conf,v "..., 8192) = 205 read(4, "", 8192) = 0 close(4) = 0 open("/etc/hosts", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=1153, ...}) = 0 read(4, "# $FreeBSD: src/etc/hosts,v 1.11"..., 8192) = 1153 read(4, "", 8192) = 0 close(4) = 0 gettimeofday({999280505, 813954}, NULL) = 0 getpid() = 27412 (ppid 27411) issetugid(0x281ffea8) = 0 open("/etc/resolv.conf", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 read(4, "domain\txanthusinc.com\nnameserver"..., 8192) = 47 read(4, "", 8192) = 0 close(4) = 0 issetugid(0x281ffea8) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\360\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\34"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf9f40, 0x1, 0xbfbf9f40, 0x1, 0xbfbf9f2c) = 1 recvfrom(5, "\317\360\201\200\0\1\0\0\0\1\0\0\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 83 close(5) = 0 close(4) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\361\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\1\0"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf9f40, 0x1, 0xbfbf9f40, 0x1, 0xbfbf9f2c) = 1 recvfrom(5, "\317\361\201\200\0\1\0\1\0\2\0\2\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 116 close(5) = 0 close(4) = 0 open("/etc/hosts", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=1153, ...}) = 0 read(4, "# $FreeBSD: src/etc/hosts,v 1.11"..., 8192) = 1153 read(4, "", 8192) = 0 close(4) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\362\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\34"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf9f40, 0x1, 0xbfbf9f40, 0x1, 0xbfbf9f2c) = 1 recvfrom(5, "\317\362\201\200\0\1\0\0\0\1\0\0\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 83 close(5) = 0 close(4) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\363\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\1\0"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf9f40, 0x1, 0xbfbf9f40, 0x1, 0xbfbf9f2c) = 1 recvfrom(5, "\317\363\201\200\0\1\0\1\0\2\0\2\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 116 close(5) = 0 close(4) = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 connect(4, {sin_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("216.121.96.201")}}, 16) = 0 sendto(4, "GET /Current HTTP/1.0\r\n", 23, 0, NULL, 0) = 23 sendto(4, "Host: www.xanthus.net\r\n", 23, 0, NULL, 0) = 23 sendto(4, "User-Agent: PHP/4.0.6\r\n\r\n", 25, 0, NULL, 0) = 25 select(5, [4], NULL, NULL, NULL) = 1 (in [4]) recvfrom(4, "HTTP/1.1 301 Moved Permanently\r\n"..., 8192, 0, NULL, NULL) = 485 shutdown(4, 0 /* receive */) = 0 close(4) = 0 open("/etc/hosts", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=1153, ...}) = 0 read(4, "# $FreeBSD: src/etc/hosts,v 1.11"..., 8192) = 1153 read(4, "", 8192) = 0 close(4) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\364\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\34"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf7c40, 0x1, 0xbfbf7c40, 0x1, 0xbfbf7c2c) = 1 recvfrom(5, "\317\364\201\200\0\1\0\0\0\1\0\0\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 83 close(5) = 0 close(4) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\365\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\1\0"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf7c40, 0x1, 0xbfbf7c40, 0x1, 0xbfbf7c2c) = 1 recvfrom(5, "\317\365\201\200\0\1\0\1\0\2\0\2\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 116 close(5) = 0 close(4) = 0 open("/etc/hosts", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=1153, ...}) = 0 read(4, "# $FreeBSD: src/etc/hosts,v 1.11"..., 8192) = 1153 read(4, "", 8192) = 0 close(4) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\366\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\34"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf7c40, 0x1, 0xbfbf7c40, 0x1, 0xbfbf7c2c) = 1 recvfrom(5, "\317\366\201\200\0\1\0\0\0\1\0\0\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 83 close(5) = 0 close(4) = 0 kqueue(0x281ffea8) = 4 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 connect(5, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, 16) = 0 sendto(5, "\317\367\1\0\0\1\0\0\0\0\0\0\3www\7xanthus\3net\0\0\1\0"..., 33, 0, NULL, 0) = 33 kevent(0x4, 0xbfbf7c40, 0x1, 0xbfbf7c40, 0x1, 0xbfbf7c2c) = 1 recvfrom(5, "\317\367\201\200\0\1\0\1\0\2\0\2\3www\7xanthus\3net\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.191.146.3")}}, [16]) = 116 close(5) = 0 close(4) = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 connect(4, {sin_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("216.121.96.201")}}, 16) = 0 sendto(4, "GET /Current/ HTTP/1.0\r\n", 24, 0, NULL, 0) = 24 sendto(4, "Host: www.xanthus.net\r\n", 23, 0, NULL, 0) = 23 sendto(4, "User-Agent: PHP/4.0.6\r\n\r\n", 25, 0, NULL, 0) = 25 select(5, [4], NULL, NULL, NULL) = 1 (in [4]) recvfrom(4, "HTTP/1.1 200 OK\r\nDate: Fri, 31 A"..., 8192, 0, NULL, NULL) = 1460 sigprocmask(SIG_SETMASK, [], NULL) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 ftruncate(3, 0) = 0 lseek(3, 0, SEEK_SET) = 0 write(3, "", 0) = 0 close(3) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 shutdown(4, 0 /* receive */) = 0 close(4) = 0 shutdown(4, 0 /* receive */) = -1 EBADF (Bad file descriptor) sigprocmask(SIG_BLOCK, NULL, []) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 write(1, "It worked", 9It worked) = 9 sigprocmask(SIG_BLOCK, NULL, []) = 0 break(0x8192000) = 0 break(0x8191000) = 0 sigprocmask(SIG_BLOCK, NULL, []) = 0 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0 sigprocmask(SIG_BLOCK, ~[ILL TRAP ABRT EMT FPE BUS SEGV SYS], []) = 0 sigprocmask(SIG_SETMASK, [], NULL) = 0 exit(0) = ? ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=13083&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]