You are here: Re: preg_replace_callback() is segfaulting in 4.4.4, length related? « PHP Language « IT news, forums, messages
Re: preg_replace_callback() is segfaulting in 4.4.4, length related?

Posted by Ric on 01/02/07 13:26

Stephen Kay schrieb:
> I'm having a problem where I changed hosts, went from php 4.1.2 to php
> 4.4.4, and now preg_replace_callback() is segfaulting when I pass it html
> that is longer than 2732 bytes. This code has worked for a long time on a
> different server.
>
> Basically, I am reading an html page template into a variable with fread().
>
> I then am doing this, which is code taken from a user example on the eval()
> php manual page, which I have used successfully for quite awhile:
>
> What it does is evaluate mixed html and php code, and output to browser. You
> call it like:
>
> eval_mixed($string);
>
> function eval_mixed_helper($arr){
error_log("Before addslashes"); //if you don't have access to apache log
output something to the browser via echo
> return ("echo stripslashes(\"".addslashes($arr[1])."\");");
error_log("After addslashes");

> }
>
> function eval_mixed($string){
>
> $string = "<? ?>".$string."<? ?>";
> $string = preg_replace("/<\?=\s+(.*?)\s+\?>/", "<? echo $1; ?>",
> $string);
> $string = str_replace('?>', '', str_replace( array('<?php', '<?'),
> '', preg_replace_callback( "/\?>((.|\n)*?)<\?(php)?/", "eval_mixed_helper",
> $string) ) );
>
> return eval($string);
> }
>
> If the template that I read into $string is 2732 or less bytes, it works
> like it always did. If it is 2733 or greater bytes, it segment faults.
>
> I found this report in the bug database, but it's really old. It sounds like
> the same thing, though:
>
> http://bugs.php.net/bug.php?id=25754
> Bug #25754 preg_replace() and preg_replace_callback() crash with long
> matches
>
> Anybody know anything about this?
>
> Again, it worked fine on the older php on a different server.

Is the php configureation the same?

> I don't really know what to do to proceed with this, it's a bit out of my
> league.

You either need to show us a complete sample or you should try to add
some debug information to your code, like shown above...
>
> Any advice would be greatly appreciated!
>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация