PHP 4.0 Bug #7503 Updated: scripts run from CGI output "#!/usr/local/bin/php -q" line
| From: | colin at easydns dot com | Date: | Tue, 21 Nov 2000 15:13:53 +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-38829@lists.php.net to get a copy of this message | ||
ID: 7503
User Update by: colin@easydns.com
Status: Open
Bug Type: Performance problem
Description: scripts run from CGI output "#!/usr/local/bin/php -q" line
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
Previous Comments:
---------------------------------------------------------------------------
[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
---------------------------------------------------------------------------
[2000-11-20 17:01:54] jason@php.net
The way you are using this should not have any problems.
I have not been able to reproduce this. What is your compile string?
Also, can you try running the standalone as follows? :
/path/to/php /path/to/test-file.php
By the way, a temporary work around for your cron job, until we solve your problem would be
grep -v '#!' /path/to/my/script.phx | /path/to/php
---------------------------------------------------------------------------
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