PHP 4.0 Bug #7503 Updated: scripts run from CGI output "#!/usr/local/bin/php -q" line
| From: | jason@php.net | Date: | Tue, 21 Nov 2000 16:44:27 +0000 |
| Subject: | PHP 4.0 Bug #7503 Updated: scripts run from CGI output "#!/usr/local/bin/php -q" line | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-38836@lists.php.net to get a copy of this message | ||
ID: 7503
Updated by: jason
Reported By: colin@easydns.com
Status: Open
Bug Type: Performance problem
Assigned To:
Comments:
I think it would be good for you to try CVS, but you might not see a difference. I have been having
problems reproducing this bug, it seems to work fine for me on 4.0.3pl1 as well as CVS.
Here is better gdb instructions:
break 699
run /usr/local/bin/test.phx
next
next
next
send the output ... I just want to see what line number it jumps to next...it is supposed to proceed
to line 701 where
it will prune commented code.
Previous Comments:
---------------------------------------------------------------------------
[2000-11-21 10:13:53] colin@easydns.com
Oopos, I posted the configure line for the apache version running on the same box. The
standalone's config line is the same without the apxs:
./configure --with-mysql=/usr/local/mysql
--enable-track-vars
--disable-debug
--disable-magic-quotes
--enable-ftp
--with-gettext
--with-xml
--with-dom
--enable-wddx
--with-curl
--with-pgsql
--with-zlib
--enable-versioning
--with-openssl
--with-snmp
--with-sablot
--with-mcrypt
As for the gdb suggestion:
[cmv@vincent cmv]$ gdb /usr/local/bin/php
GNU gdb 19991004
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(gdb) break 699
Breakpoint 1 at 0x80619c4: file cgi_main.c, line 699.
(gdb) run /usr/local/bin/test.phx
Starting program: /usr/local/bin/php /usr/local/bin/test.phx
Breakpoint 1, main (argc=2, argv=0xbffffac4) at cgi_main.c:699
699 } else if (file_handle.handle.fp && file_handle.handle.fp!=stdin) {
(gdb) bt
#0 main (argc=2, argv=0xbffffac4) at cgi_main.c:699
I'm no gdb expert, so if I'm doing this wrong, let me know.
Jason, if you want me to email you my php binary, let me know (send me a direct email to the address
above).
I see that stas has no probs with the latest CVS, so I may just grab that. Would be nice to know
why this broke with 4.0.3pl1 though ....
- Colin
---------------------------------------------------------------------------
[2000-11-21 08:48:09] stas@php.net
#! works for me in latest CVS...
---------------------------------------------------------------------------
[2000-11-20 17:46:22] jason@php.net
colin>/path/to/php /path/to/test-file.php
colin>also outputs the hash-bang line (but that's expected, colin>since it's outside
colin>of <? ?>
colin>tags and would get treated as HTML).
Actually the way Unix treats shebangs is to tracnslate
#!/bin/program
to
/bin/program script
So php has code to prune '#'s' out of the statements.
But the code just double checks its not stdin thats being parsed.
Is the configure script you used to produce the standalone the same?
"--with-apxs=/usr/local/apache/bin/apxs"
caught my attention.
Did you compile the standalone with symbols?
If you did and feel like running it through a debugger
gdb /path/to/php
break 699
run /path/to/script/file.php
see if that if statement evaluates as true... it is supposed to(But by your description it sounds
like it isnt). You will notice the comment pruneing code lies in a true result of that condition.
If you get stuck why dont you email me a copy of your php binary.
About the kludgy solution, I know it was painful to put that in. Don't worry though it will be
gone soon : )
-Jason
---------------------------------------------------------------------------
[2000-11-20 17:38:15] jason@php.net
Is the configure script you used to produce the standalone the same?
"--with-apxs=/usr/local/apache/bin/apxs"
caught my attention.
Did you compile the standalone with symbols?
If you did and feel like running it through a debugger
gdb /path/to/php
break 699
run /path/to/script/file.php
see if that if statement evaluates as true... it is supposed to(But by your description it sounds
like it isnt). You will notice the comment pruneing code lies in a true result of that condition.
If you get stuck why dont you email me a copy of your php binary.
About the kludgy solution, I know it was painful to put that in. Don't worry though it will be
gone soon : )
-Jason
---------------------------------------------------------------------------
[2000-11-20 17:17:42] colin@easydns.com
My configure line is:
./configure --with-mysql=/usr/local/mysql
--with-apxs=/usr/local/apache/bin/apxs
--enable-track-vars
--disable-debug
--disable-magic-quotes
--enable-ftp
--with-gettext
--with-xml
--with-dom
--enable-wddx
--with-curl
--with-pgsql
--with-zlib
--enable-versioning
--with-openssl
--with-snmp
--with-sablot
--with-mcrypt
Running the standalone as:
/path/to/php /path/to/test-file.php
also outputs the hash-bang line (but that's expected, since it's outside of <? ?>
tags and would get treated as HTML).
Your grep suggestion works ... kludgy, but it works. I just think there must be something wrong in
PHP since I used to run scripts through cron like this all the time without incident.
- Colin
---------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view the rest of the comments,
please view the bug report online.
Full Bug description available at: http://bugs.php.net/?id=7503