#35096 [Com]: using mod_rewrite with apache2 crashes

2005-11-07 Thread sergeym at hoster dot ru
 ID:   35096
 Comment by:   sergeym at hoster dot ru
 Reported By:  rob at burningsoda dot com
 Status:   Feedback
 Bug Type: Apache2 related
 Operating System: *
 PHP Version:  5CVS, 4CVS (2005-11-04) (snap)
 New Comment:

May be it's platform-depend bug?
I have errors on AMD64/FreeBSD.


Previous Comments:


[2005-11-07 16:13:50] Brian dot white at foxfire74 dot com

I am using virtual hosts with all of my PHP files in an aliased
directory.  Maybe that makes a difference as to weather or not PHP can
find the include files.

Here is my diff:
---

Compare: ()php.ini-recommended (40595 bytes)
   with: ()php.ini (40652 bytes)

443c443
 extension_dir = ./
---
 extension_dir = ./extensions
556c556
 ;extension=php_mbstring.dll
---
 extension=php_mbstring.dll
569c569
 ;extension=php_gd2.dll
---
 extension=php_gd2.dll
579c579
 ;extension=php_mcrypt.dll
---
 extension=php_mcrypt.dll
614c614
 SMTP = localhost
---
 SMTP = myserver
618c618,619
 ;sendmail_from = [EMAIL PROTECTED]
---
 sendmail_from = [EMAIL PROTECTED]



[2005-11-07 15:56:25] [EMAIL PROTECTED]

So we have same php.ini file in use now. And I still can't reproduce
using your rewrite rules and script. So what else is different?



[2005-11-07 15:54:13] rob at burningsoda dot com

[EMAIL PROTECTED]:~/web/devel/phpbug diff /usr/local/etc/php.ini-dist
/usr/local/etc/php.ini
94c94
 output_buffering = Off
---
 output_buffering = 4096

:)



[2005-11-07 15:42:09] [EMAIL PROTECTED]

It isn't that setting. Everything works just fine for me even
when I have output_buffering=4096 (default in php.ini-recommended)

Try making a diff of your php.ini against the base php.ini-* found in
the snapshot.



[2005-11-07 12:35:21] rob at burningsoda dot com

After rebuilding Apache2 and PHP5-dev on different machines the whole
weekend about 2 million times and wondering why some showed the bug,
some not, I eventually tracked it down to the following simple
configuration setting (*drum roll*):

*** output_buffering ***

To trigger the bug, set output_buffering = On or (e.g.)
output_buffering = 4096, TO BYPASS THE BUG (listen up, bug plagued
Joomla!/Wordpress/etc. users) SET output_buffering = Off in your
php.ini. This bypass works for PHP 4  5.

Cheers,
rob.

PS: If I extend my testcase to

?php ob_start(); echo($_GET['myarg']); ob_end_flush(); ?

with output_buffering = Off that still does _not_ trigger the bug.
Maybe that helps.



The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/35096

-- 
Edit this bug report at http://bugs.php.net/?id=35096edit=1


#35096 [Com]: php 4.4.2-dev has still trouble with mod_rewrite/apache2

2005-11-05 Thread sergeym at hoster dot ru
 ID:   35096
 Comment by:   sergeym at hoster dot ru
 Reported By:  rob at burningsoda dot com
 Status:   Feedback
 Bug Type: Apache2 related
 Operating System: FreeBSD 6.0RC1
 PHP Version:  4CVS-2005-11-04 (snap)
 New Comment:

PHP 4.4.1 with patch from FreeBSD team works fine (seems to...). But,
if add some module(s) - it works again as described in bugreport. M'be
order of modules in list is important...

--- sapi/apache2handler/sapi_apache2.c.orig Thu Nov  3 10:13:33
2005
+++ sapi/apache2handler/sapi_apache2.c  Thu Nov  3 10:14:41 2005
@@ -535,7 +535,7 @@
if (!parent_req) {
parent_req = ctx-r;
}
-   if (parent_req  strcmp(parent_req-handler,
PHP_MAGIC_TYPE)  strcmp(parent_req-handler, PHP_SOURCE_MAGIC_TYPE)
 strcmp(parent_req-h
andler, PHP_SCRIPT)) {
+   if (parent_req  parent_req-handler 
strcmp(parent_req-handler, PHP_MAGIC_TYPE) 
strcmp(parent_req-handler, PHP_SOURCE_MAGIC_TYPE)
 strcmp(parent_req-handler, PHP_SCRIPT)) {
if (php_apache_request_ctor(r, ctx
TSRMLS_CC)!=SUCCESS) {
zend_bailout();
}


Previous Comments:


[2005-11-05 09:45:15] tmelzer at tomesoft dot de

Further analyzes have shown me that the fix in 4.4.x-dev was in
sapi/apache2handler/sapi_apache2.c in function php_handler to guard
against the member 'handler' on struct request_rec of beeing NULL and
then accessing it. This was fixed in only one case where around line
518 
'if (parent_req  parent_req-handler  ...'. After I added an
r-handler  strcmp ... to the other places where the structure member
is used the crash went away but I got a 404 - file not found error. I
think this is related to the fact that I'm not sure what to do if
several of this if () statements are evalute false i.e. what to place
in the else block.



[2005-11-04 22:57:08] [EMAIL PROTECTED]

I want you to try the PHP 5 snapshot because I want to be sure this is
only happening with PHP 4. In which case we have better chance of
figuring out what fix to backport from PHP 5.

On the other hand, if this also happens with PHP 5, we really need to
know since we're about to release PHP 5.1 and it would be nice to fix
this kind of things before the release..




[2005-11-04 20:04:37] rob at burningsoda dot com

sniper,

This problem occurs only when using PHP 4.4.1 and the PHP 4-snapshots
_and_ apache 2.x. Why should I try a 5.x-snapshot? Do I misunderstand
you?



[2005-11-04 09:25:24] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip





[2005-11-04 02:49:53] rob at burningsoda dot com

Description:

I just downloaded

Stable (4.4.x-dev)
Built On: Nov 03, 2005 23:51 GMT

and built it:

PHP 4.4.2-dev (cli) (built: Nov  4 2005 02:17:10)

But it seems like, the following bug is _not_ fixed
in that snapshot:

http://bugs.php.net/bug.php?id=35059

This happens with _any_ RewriteRule I use.

Reproduce code:
---
Try to use mod_rewrite on Apache 2.x to modify any URL.
Small test case:

index.php:
?php echo($_GET['myarg']); ?

RewriteRule:
RewriteRule ^(.+)/$ index.php?myarg=$1 [L]

URLs to try:
1. http://localhost/index.php?myarg=bla
2. http://localhost/blub/
3. http://localhost/index.php/


Expected result:

In all three cases a document should be delivered:

1. bla
2. blub
3. index.php

Actual result:
--
1. Correctly delivers document.
2. No document is delivered.
3. Correctly delivers document.





-- 
Edit this bug report at http://bugs.php.net/?id=35096edit=1