Akzeptieren

Diese Website verwendet Cookies. Durch die Nutzung dieser Webseite erklären Sie sich damit einverstanden, dass Cookies gesetzt werden. Mehr erfahren

 

phpBB-3.0.14 unter PHP 7 lauffähig anwenden

  • Antworten 5
  •  
  • Aufrufe 2255

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Franky

  • Administrator
  • Neuling
  • *****
  • Beiträge: 19
phpBB-3.0.14 unter PHP 7 lauffähig anwenden
« am: 26 April 2017, 16:31 »
Die Frage, ob phpBB-3.0.14 mit PHP 7 läuft, stellen sich zur Zeit zahlreiche phpBB-Anwender. Aus meiner Sicht, gibt es eine Möglichkeit phpBB-3.0.14 unter PHP 7 anzuwenden. Lösungen der phpBB-Entwickler habe ich testweise umgesetzt. Bitte macht ein komplettes Backup des Forums und der Datenbank. Die genannten Änderungen beziehen sich auf den Bug im Standard-BBCode-System (andere Bugs in Verwendung mit PHP 7 sind mir nicht bekannt). Es ist nicht auszuschließen, dass eventuell weitere Bugs auftreten können. Daher empfehle ich grundsätzlich, die Codierungen vor Verwendung in einem Liveboard in einem Testforum mit mehreren Testern und verschiedenen Berechtigungen, ausgiebig zu prüfen und zu testen. Ich gebe keine Gewähr und die Code-Anwendung ist aus meiner Sicht verständlicher Weise euer eigenes Risiko.

Unbedingt vorher ein Backup von den Dateien und der Datenbank machen. Der Autor übernimmt keine Gewähr!

Datei:
phpBB3/includes/acp/acp_bbcodes.php


Finde Zeile (original Zeile 404)
Code: PHP
  1.                                         $replace = preg_replace('/(?<!\\\\)\$([0-9]+)/e', "'\${' . (\$1 + \$pad) . '}'", $replace);
Ersetzen mit
Code: PHP
  1.                                         $replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) {
  2.                                                 return '${' . ($match[1] + $pad) . '}';
  3.                                         }, $replace);
Finde Zeilen (original ab Zeile 469)
Code: PHP
  1.       $fp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_match);
  2.       $fp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_replace);
  3.       $sp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_match);
  4.       $sp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_replace);
Ersetzen mit
Code: PHP
  1.       $fp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
  2.          return strtolower($match[0]);
  3.       }, $fp_match);
  4.       $fp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
  5.          return strtolower($match[0]);
  6.       }, $fp_replace);
  7.       $sp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
  8.          return strtolower($match[0]);
  9.       }, $sp_match);
  10.       $sp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
  11.          return strtolower($match[0]);
  12.       }, $sp_replace);

Offline Franky

  • Administrator
  • Neuling
  • *****
  • Beiträge: 19
Re: phpBB-3.0.14 unter PHP 7 lauffähig anwenden
« Antwort #1 am: 27 April 2017, 00:03 »
Datei:
phpBB3\includes\ucp\ucp_pm_options.php


Finde Zeile (original Zeile 507)
Code: PHP
  1.         preg_replace('#^((RULE|ACTION|CHECK)_([A-Z0-9_]+))$#e', "\${strtolower('\\2') . '_lang'}[constant('\\1')] = \$user->lang['PM_\\2']['\\3']", array_keys(get_defined_constants()));
Ersetzen mit
Code: PHP
  1.         preg_replace_callback('#^((RULE|ACTION|CHECK)_([A-Z0-9_]+))$#', function ($match) use(&$rule_lang, &$action_lang, &$check_lang, $user) {
  2.                 ${strtolower($match[2]) . '_lang'}[constant($match[1])] = $user->lang['PM_' . $match[2]][$match[3]];
  3.         },

Offline Franky

  • Administrator
  • Neuling
  • *****
  • Beiträge: 19
Re: phpBB-3.0.14 unter PHP 7 lauffähig anwenden
« Antwort #2 am: 27 April 2017, 00:05 »
Datei:
phpBB3\includes\bbcode.php


Finde Zeile (original Zeile 112)
Code: PHP
  1.                                                 $message = preg_replace($preg['search'], $preg['replace'], $message);
Ersetzen mit
Code: PHP
  1.                                                 foreach ($preg['search'] as $key => $search)
  2.                                                 {
  3.                                                         if (is_callable($preg['replace'][$key]))
  4.                                                         {
  5.                                                                 $message = preg_replace_callback($search, $preg['replace'][$key], $message);
  6.                                                         }
  7.                                                                 else
  8.                                                         {
  9.                                                                 $message = preg_replace($search, $preg['replace'][$key], $message);
  10.                                                         }
  11.                                                 }
Finde Zeile (original Zeile 211)
Code: PHP
  1.                      '#\[quote(?:=&quot;(.*?)&quot;)?:$uid\]((?!\[quote(?:=&quot;.*?&quot;)?:$uid\]).)?#ise'   => "\$this->bbcode_second_pass_quote('\$1', '\$2')"
Ersetzen mit
Code: PHP
  1.                      '#\[quote(?:=&quot;(.*?)&quot;)?:$uid\]((?!\[quote(?:=&quot;.*?&quot;)?:$uid\]).)?#is'   => function ($match) {
  2.                         return $this->bbcode_second_pass_quote($match[1], $match[2]);
  3.                      },
Finde Zeile (original Zeile 290)
Code: PHP
  1.                      '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#ise'   => "\$this->bbcode_second_pass_code('\$1', '\$2')",
Ersetzen mit
Code: PHP
  1.                      '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#is'   => function ($match) {
  2.                         return $this->bbcode_second_pass_code($match[1], $match[2]);
  3.                      },
Finde Zeile (original Zeile 300)
Code: PHP
  1.                      '#\[list=([^\[]+):$uid\]#e'               => "\$this->bbcode_list('\$1')",
Ersetzen mit
Code: PHP
  1.                      '#\[list=([^\[]+):$uid\]#'               => function ($match) {
  2.                         return $this->bbcode_list($match[1]);
  3.                      },
Finde Zeile (original Zeile 384)
Code: PHP
  1.                   $bbcode_tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl);
Ersetzen mit
Code: PHP
  1.                   $bbcode_tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
  2.                      return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
  3.                   }, $bbcode_tpl);
Finde Zeile (original Zeile 488)
Code: PHP
  1.       $tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
Ersetzen mit
Code: PHP
  1.       $tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
  2.          return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
  3.       }, $tpl);

Offline Franky

  • Administrator
  • Neuling
  • *****
  • Beiträge: 19
Re: phpBB-3.0.14 unter PHP 7 lauffähig anwenden
« Antwort #3 am: 27 April 2017, 00:13 »
Datei:
phpBB3\includes\functions_content.php


Finde Zeilen (original Zeile ab 659)
Code: PHP
  1. function make_clickable($text, $server_url = false, $class = 'postlink')
  2. {
  3.    if ($server_url === false)
  4.    {
  5.       $server_url = generate_board_url();
  6.    }
  7.  
  8.    static $magic_url_match;
  9.    static $magic_url_replace;
  10.    static $static_class;
  11.  
  12.    if (!is_array($magic_url_match) || $static_class != $class)
  13.    {
  14.       $static_class = $class;
  15.       $class = ($static_class) ? ' class="' . $static_class . '"' : '';
  16.       $local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';
  17.  
  18.       $magic_url_match = $magic_url_replace = array();
  19.       // Be sure to not let the matches cross over. ;)
  20.  
  21.       // relative urls for this board
  22.       $magic_url_match[] = '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie';
  23.       $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_LOCAL, '\$1', '\$2', '\$3', '$local_class')";
  24.  
  25.       // matches a xxxx://aaaaa.bbb.cccc. ...
  26.       $magic_url_match[] = '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#ie';
  27.       $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_FULL, '\$1', '\$2', '', '$class')";
  28.  
  29.       // matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
  30.       $magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#ie';
  31.       $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_WWW, '\$1', '\$2', '', '$class')";
  32.  
  33.       // matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
  34.       $magic_url_match[] = '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/ie';
  35.       $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_EMAIL, '\$1', '\$2', '', '')";
  36.    }
  37.  
  38.    return preg_replace($magic_url_match, $magic_url_replace, $text);
  39. }
Ersetzen mit
Code: PHP
  1. function make_clickable($text, $server_url = false, $class = 'postlink')
  2. {
  3.    if ($server_url === false)
  4.    {
  5.       $server_url = generate_board_url();
  6.    }
  7.    static $static_class;
  8.    static $magic_url_match_args;
  9.    if (!isset($magic_url_match_args[$server_url]) || $static_class != $class)
  10.    {
  11.       $static_class = $class;
  12.       $class = ($static_class) ? ' class="' . $static_class . '"' : '';
  13.       $local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';
  14.       if (!is_array($magic_url_match_args))
  15.       {
  16.          $magic_url_match_args = array();
  17.       }
  18.       // relative urls for this board
  19.       $magic_url_match_args[$server_url][] = array(
  20.          '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#iu',
  21.          MAGIC_URL_LOCAL,
  22.          $local_class,
  23.       );
  24.       // matches a xxxx://aaaaa.bbb.cccc. ...
  25.       $magic_url_match_args[$server_url][] = array(
  26.          '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#iu',
  27.          MAGIC_URL_FULL,
  28.          $class,
  29.       );
  30.       // matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
  31.       $magic_url_match_args[$server_url][] = array(
  32.          '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#iu',
  33.          MAGIC_URL_WWW,
  34.          $class,
  35.       );
  36.       // matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
  37.       $magic_url_match_args[$server_url][] = array(
  38.          '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/iu',
  39.          MAGIC_URL_EMAIL,
  40.          '',
  41.       );
  42.    }
  43.  
  44.    foreach ($magic_url_match_args[$server_url] as $magic_args)
  45.    {
  46.       if (preg_match($magic_args[0], $text, $matches))
  47.       {
  48.          $text = preg_replace_callback($magic_args[0], function($matches) use ($magic_args)
  49.          {
  50.             $relative_url = isset($matches[3]) ? $matches[3] : '';
  51.             return make_clickable_callback($magic_args[1], $matches[1], $matches[2], $relative_url, $magic_args[2]);
  52.          }, $text);
  53.       }
  54.    }
  55.    return $text;
  56. }


Offline Franky

  • Administrator
  • Neuling
  • *****
  • Beiträge: 19
Re: phpBB-3.0.14 unter PHP 7 lauffähig anwenden
« Antwort #4 am: 27 April 2017, 00:24 »
Datei:
phpBB3\includes\message_parser.php


Finde Zeilen (original ab Zeile 50)
Code: PHP
  1.       foreach ($this->bbcodes as $bbcode_name => $bbcode_data)
  2.       {
  3.          if (isset($bbcode_data['disabled']) && $bbcode_data['disabled'])
  4.          {
  5.             foreach ($bbcode_data['regexp'] as $regexp => $replacement)
  6.             {
  7.                if (preg_match($regexp, $this->message))
  8.                {
  9.                   $this->warn_msg[] = sprintf($user->lang['UNAUTHORISED_BBCODE'] , '[' . $bbcode_name . ']');
  10.                   continue;
  11.                }
  12.             }
  13.          }
  14.          else
  15.          {
  16.             foreach ($bbcode_data['regexp'] as $regexp => $replacement)
  17.             {
  18.                // The pattern gets compiled and cached by the PCRE extension,
  19.                // it should not demand recompilation
  20.                if (preg_match($regexp, $this->message))
  21.                {
  22.                   $this->message = preg_replace($regexp, $replacement, $this->message);
  23.                   $bitfield->set($bbcode_data['bbcode_id']);
  24.                }
  25.             }
  26.          }
  27.       }
  28.  
  29.       $this->bbcode_bitfield = $bitfield->get_base64();
  30.    }
Ersetzen mit
Code: PHP
  1.       foreach ($this->bbcodes as $bbcode_name => $bbcode_data)
  2.       {
  3.          if (isset($bbcode_data['disabled']) && $bbcode_data['disabled'])
  4.          {
  5.             foreach ($bbcode_data['regexp'] as $regexp => $replacement)
  6.             {
  7.                if (preg_match($regexp, $this->message))
  8.                {
  9.                   $this->warn_msg[] = sprintf($user->lang['UNAUTHORISED_BBCODE'] , '[' . $bbcode_name . ']');
  10.                   continue;
  11.                }
  12.             }
  13.          }
  14.          else
  15.          {
  16.             foreach ($bbcode_data['regexp'] as $regexp => $replacement)
  17.             {
  18.                // The pattern gets compiled and cached by the PCRE extension,
  19.                // it should not demand recompilation
  20.                if (preg_match($regexp, $this->message))
  21.                {
  22.                   if (is_callable($replacement))
  23.                   {
  24.                      $this->message = preg_replace_callback($regexp, $replacement, $this->message);
  25.                   }
  26.                   else
  27.                   {
  28.                      $this->message = preg_replace($regexp, $replacement, $this->message);
  29.                   }
  30.                   $bitfield->set($bbcode_data['bbcode_id']);
  31.                }
  32.             }
  33.          }
  34.       }
  35.  
  36.       $this->bbcode_bitfield = $bitfield->get_base64();
  37.    }
Finde Zeilen (original ab Zeile 103)
Code: PHP
  1.    * Init bbcode data for later parsing
  2.    */
  3.    function bbcode_init($allow_custom_bbcode = true)
  4.    {
  5.       static $rowset;
Danach einfügen In einer neuen leeren Zeile danach einfügen (!Leerzeile nicht vergessen  einzufügen!)
Code: PHP
  1.  
  2.       $bbcode_class = $this;
  3.  
Finde Zeilen (original ab Zeile 114)
Code: PHP
  1.       $this->bbcodes = array(
  2.          'code'         => array('bbcode_id' => 8,   'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uise' => "\$this->bbcode_code('\$1', '\$2')")),
  3.          'quote'         => array('bbcode_id' => 0,   'regexp' => array('#\[quote(?:=&quot;(.*?)&quot;)?\](.+)\[/quote\]#uise' => "\$this->bbcode_quote('\$0')")),
  4.          'attachment'   => array('bbcode_id' => 12,   'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uise' => "\$this->bbcode_attachment('\$1', '\$2')")),
  5.          'b'            => array('bbcode_id' => 1,   'regexp' => array('#\[b\](.*?)\[/b\]#uise' => "\$this->bbcode_strong('\$1')")),
  6.          'i'            => array('bbcode_id' => 2,   'regexp' => array('#\[i\](.*?)\[/i\]#uise' => "\$this->bbcode_italic('\$1')")),
  7.          'url'         => array('bbcode_id' => 3,   'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiUe' => "\$this->validate_url('\$2', ('\$3') ? '\$3' : '\$4')")),
  8.          'img'         => array('bbcode_id' => 4,   'regexp' => array('#\[img\](.*)\[/img\]#uiUe' => "\$this->bbcode_img('\$1')")),
  9.          'size'         => array('bbcode_id' => 5,   'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uise' => "\$this->bbcode_size('\$1', '\$2')")),
  10.          'color'         => array('bbcode_id' => 6,   'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uise' => "\$this->bbcode_color('\$1', '\$2')")),
  11.          'u'            => array('bbcode_id' => 7,   'regexp' => array('#\[u\](.*?)\[/u\]#uise' => "\$this->bbcode_underline('\$1')")),
  12.          'list'         => array('bbcode_id' => 9,   'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uise' => "\$this->bbcode_parse_list('\$0')")),
  13.          'email'         => array('bbcode_id' => 10,   'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uise' => "\$this->validate_email('\$1', '\$2')")),
  14.          'flash'         => array('bbcode_id' => 11,   'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#uie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')"))
  15.       );
Ersetzen mit
Code: PHP
  1.       $this->bbcodes = array(
  2.          'code'         => array('bbcode_id' => 8,   'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uis' => function ($match) use($bbcode_class)
  3.             {
  4.                return $bbcode_class->bbcode_code($match[1], $match[2]);
  5.             }
  6.          )),
  7.          'quote'         => array('bbcode_id' => 0,   'regexp' => array('#\[quote(?:=&quot;(.*?)&quot;)?\](.+)\[/quote\]#uis' => function ($match) use($bbcode_class)
  8.             {
  9.                return $bbcode_class->bbcode_quote($match[0]);
  10.             }
  11.          )),
  12.          'attachment'   => array('bbcode_id' => 12,   'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uis' => function ($match) use($bbcode_class)
  13.             {
  14.                return $bbcode_class->bbcode_attachment($match[1], $match[2]);
  15.             }
  16.          )),
  17.          'b'            => array('bbcode_id' => 1,   'regexp' => array('#\[b\](.*?)\[/b\]#uis' => function ($match) use($bbcode_class)
  18.             {
  19.                return $bbcode_class->bbcode_strong($match[1]);
  20.             }
  21.          )),
  22.          'i'            => array('bbcode_id' => 2,   'regexp' => array('#\[i\](.*?)\[/i\]#uis' => function ($match) use($bbcode_class)
  23.             {
  24.                return $bbcode_class->bbcode_italic($match[1]);
  25.             }
  26.          )),
  27.          'url'         => array('bbcode_id' => 3,   'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiU' => function ($match) use($bbcode_class)
  28.             {
  29.                return $bbcode_class->validate_url($match[2], ($match[3]) ? $match[3] : $match[4]);
  30.             }
  31.          )),
  32.          'img'         => array('bbcode_id' => 4,   'regexp' => array('#\[img\](.*)\[/img\]#uiU' => function ($match) use($bbcode_class)
  33.             {
  34.                return $bbcode_class->bbcode_img($match[1]);
  35.             }
  36.          )),
  37.          'size'         => array('bbcode_id' => 5,   'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uis' => function ($match) use($bbcode_class)
  38.             {
  39.                return $bbcode_class->bbcode_size($match[1], $match[2]);
  40.             }
  41.          )),
  42.          'color'         => array('bbcode_id' => 6,   'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uis' => function ($match) use($bbcode_class)
  43.             {
  44.                return $bbcode_class->bbcode_color($match[1], $match[2]);
  45.             }
  46.          )),
  47.          'u'            => array('bbcode_id' => 7,   'regexp' => array('#\[u\](.*?)\[/u\]#uis' => function ($match) use($bbcode_class)
  48.             {
  49.                return $bbcode_class->bbcode_underline($match[1]);
  50.             }
  51.          )),
  52.          'list'         => array('bbcode_id' => 9,   'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uis' => function ($match) use($bbcode_class)
  53.             {
  54.                return $bbcode_class->bbcode_parse_list($match[0]);
  55.             }
  56.          )),
  57.          'email'         => array('bbcode_id' => 10,   'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uis' => function ($match) use($bbcode_class)
  58.             {
  59.                return $bbcode_class->validate_email($match[1], $match[2]);
  60.             }
  61.          )),
  62.          'flash'         => array('bbcode_id' => 11,   'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ui' => function ($match) use($bbcode_class)
  63.             {
  64.                return $bbcode_class->bbcode_flash($match[1], $match[2], $match[3]);
  65.             }
  66.          ))
  67.       );
Finde Zeilen (original ab Zeile 725)
Code: PHP
  1.       $in = preg_replace('#quote=&quot;(.*?)&quot;\]#ie', "'quote=&quot;' . str_replace(array('[', ']', '\\\"'), array('&#38;#91;', '&#38;#93;', '\"'), '\$1') . '&quot;]'", $in);
Ersetzen mit
Code: PHP
  1.       $in = preg_replace_callback('#quote=&quot;(.*?)&quot;\]#i', function ($match) {
  2.          return 'quote=&quot;' . str_replace(array('[', ']', '\\\"'), array('&#38;#91;', '&#38;#93;', '\"'), $match[1]) . '&quot;]';
  3.       }, $in);
Finde Zeile (original Zeile 1431)
Code: PHP
  1.                $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
Ersetzen mit
Code: PHP
  1.                $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
  2.                   return '[attachment='.($match[1] + 1).']' . $match[2] . '[/attachment]';
  3.                }, $this->message);
Finde Zeile (original Zeile 1494)
Code: PHP
  1.                $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "(\\1 == \$index) ? '' : ((\\1 > \$index) ? '[attachment=' . (\\1 - 1) . ']\\2[/attachment]' : '\\0')", $this->message);
Ersetzen mit
Code: PHP
  1.                $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) use($index) {
  2.                   return ($match[1] == $index) ? '' : (($match[1] > $index) ? '[attachment=' . ($match[1] - 1) . ']' . $match[2] . '[/attachment]' : $match[0]);
  3.                }, $this->message);
Finde Zeile (original Zeile 1533)
Code: PHP
  1.                   $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
Ersetzen mit
Code: PHP
  1.                   $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
  2.                      return '[attachment=' . ($match[1] + 1) . ']' . $match[2] . '[/attachment]';
  3.                   }, $this->message);


Vielen Dank an Dennis der mich per E-Mail auf einen Fehler aufmerksam gemacht hat. Dieser wurde behoben und das Snippet nochmals überprüft.

Vielen Dank Dennis für deine Meldung  :)

Offline Franky

  • Administrator
  • Neuling
  • *****
  • Beiträge: 19
Re: phpBB-3.0.14 unter PHP 7 lauffähig anwenden
« Antwort #5 am: 03 Juni 2017, 01:16 »
Captcha Bug im Adminbereich beheben

öffnet phpBB/includes/captcha/plugins/

phpbb_captcha_gd_plugin.php
Finde Zeile (original Zeile 55)
Code: PHP
  1.                 $instance =& new phpbb_captcha_gd();
Ersetzen mit
Code: PHP
  1.                 $instance = new phpbb_captcha_gd();

phpbb_captcha_nogd_plugin.php
Finde Zeile (original Zeile 45)
Code: PHP
  1.                 $instance =& new phpbb_captcha_nogd();
Ersetzen mit
Code: PHP
  1.                 $instance = new phpbb_captcha_nogd();

phpbb_captcha_qa_plugin.php
Finde Zeile (original Zeile 104)
Code: PHP
  1.                 $instance =& new phpbb_captcha_qa();
Ersetzen mit
Code: PHP
  1.                 $instance = new phpbb_captcha_qa();

phpbb_recaptcha_plugin.php
Finde Zeile (original Zeile 59)
Code: PHP
  1.                 $instance =& new phpbb_recaptcha();
Ersetzen mit
Code: PHP
  1.                 $instance = new phpbb_recaptcha();