Jak rozjet phpBB 3.0 na PHP7?

Zde najdete veškeré články portálu phpBB.cz
Odpovědět
Uživatelský avatar
Otakar Pěnkava
Administrátor
Administrátor
Příspěvky: 581
Registrován: sob 25. říj 2008 16:17:14
Kontaktovat uživatele:

Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Otakar Pěnkava » úte 31. kvě 2016 15:29:09

Stále nedám dopustit na phpBB 3.0, využívám ho jako framework, na kterém si stavím různé ať už menší nebo větší systémy. Bohužel koncem roku skončí podpora pro phpBB 3.0 a nedá se očekávat, že ještě přijde verze, která přinese podporu PHP7.

Proto jsem se rozhodl rozběhnout phpBB 3.0 na PHP7 a dát do kupy seznam změn, které musíte udělat, aby vám fórum běželo správně i pod touto verzí PHP.

Změny se provádí klasickým způsobem (= připojíte se na FTP, najdete soubor, otevřete a daný řádek přepíšete/upravíte). Neříkám, že dané opravy jsou nejlepším řešením, určitě by to šlo napsat lépe, ALE fungují a to je hlavní.

Pojďme tedy na to:
Otevři:
includes/functions_content.php
Najdi: (řádek 78)

Kód: Vybrat vše

$selected = $$sort_ary['key'];
Nahraď:

Kód: Vybrat vše

$selected = ${$sort_ary['key']};
Najdi:

Kód: Vybrat vše

/**
* make_clickable function
*
* Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.
* Cuts down displayed size of link if over 50 chars, turns absolute links
* into relative versions when the server/script path matches the link
*/
function make_clickable($text, $server_url = false, $class = 'postlink')
{
	if ($server_url === false)
	{
		$server_url = generate_board_url();
	}

	static $magic_url_match;
	static $magic_url_replace;
	static $static_class;

	if (!is_array($magic_url_match) || $static_class != $class)
	{
		$static_class = $class;
		$class = ($static_class) ? ' class="' . $static_class . '"' : '';
		$local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';

		$magic_url_match = $magic_url_replace = array();
		// Be sure to not let the matches cross over. ;)

		// relative urls for this board
		$magic_url_match[] = '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_LOCAL, '\$1', '\$2', '\$3', '$local_class')";

		// matches a xxxx://aaaaa.bbb.cccc. ...
		$magic_url_match[] = '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_FULL, '\$1', '\$2', '', '$class')";

		// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
		$magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_WWW, '\$1', '\$2', '', '$class')";

		// matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
		$magic_url_match[] = '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_EMAIL, '\$1', '\$2', '', '')";
	}

	return preg_replace($magic_url_match, $magic_url_replace, $text);
  return preg_replace_callback();
}
Nahraď:

Kód: Vybrat vše

/**
* make_clickable function
*
* Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.
* Cuts down displayed size of link if over 50 chars, turns absolute links
* into relative versions when the server/script path matches the link
*/
function make_clickable($text, $server_url = false, $class = 'postlink')
{
	if ($server_url === false)
	{
		$server_url = generate_board_url();
	}

	static $static_class;
	static $magic_url_match_args;

	if (!isset($magic_url_match_args[$server_url]) || $static_class != $class)
	{
		$static_class = $class;
		$class = ($static_class) ? ' class="' . $static_class . '"' : '';
		$local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';

		if (!is_array($magic_url_match_args))
		{
			$magic_url_match_args = array();
		}

		// relative urls for this board
		$magic_url_match_args[$server_url][] = array(
			'#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#iu',
			MAGIC_URL_LOCAL,
			$local_class,
		);

		// matches a xxxx://aaaaa.bbb.cccc. ...
		$magic_url_match_args[$server_url][] = array(
			'#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#iu',
			MAGIC_URL_FULL,
			$class,
		);

		// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
		$magic_url_match_args[$server_url][] = array(
			'#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#iu',
			MAGIC_URL_WWW,
			$class,
		);

		// matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
		$magic_url_match_args[$server_url][] = array(
			'/(^|[\n\t (>])(' . get_preg_expression('email') . ')/iu',
			MAGIC_URL_EMAIL,
			'',
		);
	}

	foreach ($magic_url_match_args[$server_url] as $magic_args)
	{
		if (preg_match($magic_args[0], $text, $matches))
		{
			$text = preg_replace_callback($magic_args[0], function($matches) use ($magic_args)
			{
				$relative_url = isset($matches[3]) ? $matches[3] : '';
				return make_clickable_callback($magic_args[1], $matches[1], $matches[2], $relative_url, $magic_args[2]);
			}, $text);
		}
	}

	return $text;
}
Otevři:
includes/bbcode.php
Najdi:

Kód: Vybrat vše

$tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
Nahraď:

Kód: Vybrat vše

$tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
			return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
		}, $tpl);
Najdi:

Kód: Vybrat vše

						// we need to turn the entities back into their original form to allow the
						// search patterns to work properly
						if (!$undid_bbcode_specialchars)
						{
							$message = str_replace(array(':', '.'), array(':', '.'), $message);
							$undid_bbcode_specialchars = true;
						}

						$message = preg_replace($preg['search'], $preg['replace'], $message);
						$preg = array('search' => array(), 'replace' => array());
Nahraď:

Kód: Vybrat vše

						// we need to turn the entities back into their original form to allow the
						// search patterns to work properly
						if (!$undid_bbcode_specialchars)
						{
							$message = str_replace(array(':', '.'), array(':', '.'), $message);
							$undid_bbcode_specialchars = true;
						}

						foreach ($preg['search'] as $key => $search)
						{
							if (is_callable($preg['replace'][$key]))
							{
								$message = preg_replace_callback($search, $preg['replace'][$key], $message);
							}
							else
							{
								$message = preg_replace($search, $preg['replace'][$key], $message);
							}
						}

						$preg = array('search' => array(), 'replace' => array());
Najdi:

Kód: Vybrat vše

						'preg' => array(
							'#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise'	=> "\$this->bbcode_second_pass_quote('\$1', '\$2')"
						)
Nahraď:

Kód: Vybrat vše

						'preg' => array(
							'#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#is'	=> function ($match) {
								return $this->bbcode_second_pass_quote($match[1], $match[2]);
							},
						)
Najdi:

Kód: Vybrat vše

				case 8:
					$this->bbcode_cache[$bbcode_id] = array(
						'preg' => array(
							'#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#ise'	=> "\$this->bbcode_second_pass_code('\$1', '\$2')",
						)
					);
				break;
Nahraď:

Kód: Vybrat vše

				case 8:
					$this->bbcode_cache[$bbcode_id] = array(
						'preg' => array(
							'#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#is'	=> function ($match) {
								return $this->bbcode_second_pass_code($match[1], $match[2]);
							},
						)
					);
				break;
Najdi:

Kód: Vybrat vše

						'preg' => array(
							'#(\[\/?(list|\*):[mou]?:?$uid\])[\n]{1}#'	=> "\$1",
							'#(\[list=([^\[]+):$uid\])[\n]{1}#'			=> "\$1",
							'#\[list=([^\[]+):$uid\]#e'					=> "\$this->bbcode_list('\$1')",
						),
Nahraď:

Kód: Vybrat vše

						'preg' => array(
							'#(\[\/?(list|\*):[mou]?:?$uid\])[\n]{1}#'	=> "\$1",
							'#(\[list=([^\[]+):$uid\])[\n]{1}#'			=> "\$1",
							'#\[list=([^\[]+):$uid\]#'					=> function ($match) {
								return $this->bbcode_list($match[1]);
							},
						),
Najdi:

Kód: Vybrat vše

						// Replace {L_*} lang strings
						$bbcode_tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl);
Nahraď:

Kód: Vybrat vše

						// Replace {L_*} lang strings
						$bbcode_tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
							return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
						}, $bbcode_tpl);
Otevři:
includes/ucp/ucp_register.php

Najdi:

Kód: Vybrat vše

			$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
Nahraď:

Kód: Vybrat vše

			$error = array_map(array($user, 'lang'), $error);
Otevři:
includes/captcha/plugins/phpbb_captcha_nogd_plugin.php
Najdi:

Kód: Vybrat vše

		$instance =& new phpbb_captcha_nogd();
Nahraď:

Kód: Vybrat vše

		$instance = new phpbb_captcha_nogd();
Otevři:
includes/captcha/plugins/phpbb_recaptcha_plugin.php
Najdi:

Kód: Vybrat vše

		$instance =& new phpbb_recaptcha();
Nahraď:

Kód: Vybrat vše

		$instance = new phpbb_recaptcha();
Otevři:
includes/captcha/plugins/phpbb_captcha_qa_plugin.php
Najdi:

Kód: Vybrat vše

		$instance =& new phpbb_captcha_qa();
Nahraď:

Kód: Vybrat vše

		$instance = new phpbb_captcha_qa();
Otevři:
includes/message_parser.php
Najdi:

Kód: Vybrat vše

					// The pattern gets compiled and cached by the PCRE extension,
					// it should not demand recompilation
					if (preg_match($regexp, $this->message))
					{
						$this->message = preg_replace($regexp, $replacement, $this->message);
						$bitfield->set($bbcode_data['bbcode_id']);
					}
Nahraď:

Kód: Vybrat vše

					// The pattern gets compiled and cached by the PCRE extension,
					// it should not demand recompilation
					if (preg_match($regexp, $this->message))
					{
						if (is_callable($replacement))
						{
							$this->message = preg_replace_callback($regexp, $replacement, $this->message);
						}
						else
						{
							$this->message = preg_replace($regexp, $replacement, $this->message);
						}
						$bitfield->set($bbcode_data['bbcode_id']);
					}
Najdi:

Kód: Vybrat vše


		// This array holds all bbcode data. BBCodes will be processed in this
		// order, so it is important to keep -code- in first position and
		// -quote- in second position.
		// To parse multiline URL we enable dotall option setting only for URL text
		// but not for link itself, thus [url][/url] is not affected.
		$this->bbcodes = array(
			'code'			=> array('bbcode_id' => 8,	'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#ise' => "\$this->bbcode_code('\$1', '\$2')")),
			'quote'			=> array('bbcode_id' => 0,	'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#ise' => "\$this->bbcode_quote('\$0')")),
			'attachment'	=> array('bbcode_id' => 12,	'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#ise' => "\$this->bbcode_attachment('\$1', '\$2')")),
			'b'				=> array('bbcode_id' => 1,	'regexp' => array('#\[b\](.*?)\[/b\]#ise' => "\$this->bbcode_strong('\$1')")),
			'i'				=> array('bbcode_id' => 2,	'regexp' => array('#\[i\](.*?)\[/i\]#ise' => "\$this->bbcode_italic('\$1')")),
			'url'			=> array('bbcode_id' => 3,	'regexp' => array('#\[url(=(.*))?\](.*)\[/url\]#iUe' => "\$this->validate_url('\$2', '\$3')")),
			'img'			=> array('bbcode_id' => 4,	'regexp' => array('#\[img\](.*)\[/img\]#iUe' => "\$this->bbcode_img('\$1')")),
			'size'			=> array('bbcode_id' => 5,	'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#ise' => "\$this->bbcode_size('\$1', '\$2')")),
			'color'			=> array('bbcode_id' => 6,	'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")),
			'u'				=> array('bbcode_id' => 7,	'regexp' => array('#\[u\](.*?)\[/u\]#ise' => "\$this->bbcode_underline('\$1')")),
			'list'			=> array('bbcode_id' => 9,	'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#ise' => "\$this->bbcode_parse_list('\$0')")),
			'email'			=> array('bbcode_id' => 10,	'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\$1', '\$2')")),
			'flash'			=> array('bbcode_id' => 11,	'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')"))
		);
Nahraď:

Kód: Vybrat vše

		$bbcode_class = $this;

		// This array holds all bbcode data. BBCodes will be processed in this
		// order, so it is important to keep -code- in first position and
		// -quote- in second position.
		$this->bbcodes = array(
			'code'			=> array('bbcode_id' => 8,	'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_code($match[1], $match[2]);
				}
			)),
			'quote'			=> array('bbcode_id' => 0,	'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_quote($match[0]);
				}
			)),
			'attachment'	=> array('bbcode_id' => 12,	'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_attachment($match[1], $match[2]);
				}
			)),
			'b'				=> array('bbcode_id' => 1,	'regexp' => array('#\[b\](.*?)\[/b\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_strong($match[1]);
				}
			)),
			'i'				=> array('bbcode_id' => 2,	'regexp' => array('#\[i\](.*?)\[/i\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_italic($match[1]);
				}
			)),
			'url'			=> array('bbcode_id' => 3,	'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiU' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->validate_url($match[2], ($match[3]) ? $match[3] : $match[4]);
				}
			)),
			'img'			=> array('bbcode_id' => 4,	'regexp' => array('#\[img\](.*)\[/img\]#uiU' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_img($match[1]);
				}
			)),
			'size'			=> array('bbcode_id' => 5,	'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_size($match[1], $match[2]);
				}
			)),
			'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)
				{
					return $bbcode_class->bbcode_color($match[1], $match[2]);
				}
			)),
			'u'				=> array('bbcode_id' => 7,	'regexp' => array('#\[u\](.*?)\[/u\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_underline($match[1]);
				}
			)),
			'list'			=> array('bbcode_id' => 9,	'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_parse_list($match[0]);
				}
			)),
			'email'			=> array('bbcode_id' => 10,	'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->validate_email($match[1], $match[2]);
				}
			)),
			'flash'			=> array('bbcode_id' => 11,	'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ui' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_flash($match[1], $match[2], $match[3]);
				}
			))
		);
Najdi:

Kód: Vybrat vše

		// To let the parser not catch tokens within quote_username quotes we encode them before we start this...
		$in = preg_replace('#quote="(.*?)"\]#ie', "'quote="' . str_replace(array('[', ']', '\\\"'), array('[', ']', '\"'), '\$1') . '"]'", $in);
Nahraď:

Kód: Vybrat vše

		// To let the parser not catch tokens within quote_username quotes we encode them before we start this...
		$in = preg_replace_callback('#quote="(.*?)"\]#i', function ($match) {
			return 'quote="' . str_replace(array('[', ']', '\\\"'), array('[', ']', '\"'), $match[1]) . '"]';
		}, $in);
Upozornění:
Pokud máte v config.php:

Kód: Vybrat vše

$dbms = 'mysql';
Změňte na:

Kód: Vybrat vše

$dbms = 'mysqli';
Starám se o projekt phpBB.cz od doby, kdy jsem jej zachránil před zaniknutím. Pomůžete mi a dostaneme jej zase nahoru?
Přes soukromé zprávy neposkytuji podporu. Napište do fóra, kde vyřešení problému může pomoci ostatním.

Uživatelský avatar
smiesek
V.I.P.
V.I.P.
Příspěvky: 3059
Registrován: stř 22. úno 2006 1:00:00
Bydliště: Praha
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od smiesek » úte 31. kvě 2016 18:58:19

zdravím, trošku mi unikají podstaty, jak souvisí PHP7 s phpBB 3.0? Resp. proč je případně vhodné udělat tuto změnu? Týká se pouze nové instalace a nebo i současných for, které jsou na phpBB 3.0?

Děkuju za vysvětlení a věnování mi času.

Uživatelský avatar
Otakar Pěnkava
Administrátor
Administrátor
Příspěvky: 581
Registrován: sob 25. říj 2008 16:17:14
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Otakar Pěnkava » úte 31. kvě 2016 20:36:29

Ahoj,
mám projekty, které běží na phpBB 3.0 a je nemožné je aktualizovat na phpBB 3.1 a novější z toho důvodu, že jsou silně modifikované a nové phpBB 3.1 by bylo pro ně nesmyslnou překážkou. Bohužel phpBB 3.0 (ani 3.1) nejedou na novější verzi PHP, vyskakují chyby atp. Tento postup právě opraví dané chyby, takže kdo bude chtít aktualizovat na novější PHP, tak může i se starším phpBB.
Starám se o projekt phpBB.cz od doby, kdy jsem jej zachránil před zaniknutím. Pomůžete mi a dostaneme jej zase nahoru?
Přes soukromé zprávy neposkytuji podporu. Napište do fóra, kde vyřešení problému může pomoci ostatním.

Uživatelský avatar
kksmirice
Junior tým
Junior tým
Příspěvky: 1639
Registrován: pát 17. úno 2012 21:39:58
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od kksmirice » úte 31. kvě 2016 20:38:30

Stačí si trochu projít změněné funkce a přijdete na to, že z php7 byly odstraněny, buď celé nebo jen některé části nejsou podporovány.

A odpověď na další dotaz je snad již jasný - týká se všech fór verze 3.0.
Klidně mi Vykejte, mohl bych být Vašim dědou...
1. Murphyho zákon: Na počátku nebylo nic. I to se pokazilo!

stránky: KK Zálabák Smiřice, test stránky pro všechny

[url=mailto://prolamy@email.cz?subject=phpBB%20pomoc]kontakt[/url] v případě pomoci - instalace systémů, založení databáze a tabulek, FTP přístup

Uživatelský avatar
Otakar Pěnkava
Administrátor
Administrátor
Příspěvky: 581
Registrován: sob 25. říj 2008 16:17:14
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Otakar Pěnkava » pát 14. říj 2016 13:33:43

Při přechodu WebDeal.cz z PHP 5.5 na 7.0 jsem přišel na další možné chyby a tak jsem do návodu přidal na konec instrukce pro úpravu souboru messenger_parser.php a config.php
Starám se o projekt phpBB.cz od doby, kdy jsem jej zachránil před zaniknutím. Pomůžete mi a dostaneme jej zase nahoru?
Přes soukromé zprávy neposkytuji podporu. Napište do fóra, kde vyřešení problému může pomoci ostatním.

Marek111

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Marek111 » pon 08. kvě 2017 23:14:25

Mam phpbb3, cele som hom spojazdnil na PHP7.1 a funguje bez problemov, jediny problem na ktory som ale narazil su bbtagy, tie co su defaultne v phpbb funguju, no tie ktore si mozem sam vytvorit v administracii nefunguju, natrafil si tiez na tento problem, ci toto si neriesil?

Uživatelský avatar
Otakar Pěnkava
Administrátor
Administrátor
Příspěvky: 581
Registrován: sob 25. říj 2008 16:17:14
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Otakar Pěnkava » pát 12. kvě 2017 14:28:57

Zatím jsem to netestoval na PHP 7.1, pouze na 7.0. A pokud jsi nepoužil postup tady v tématu, tak velmi pravděpodobně nebude fungovat větší část fóra. Co si tak pamatuji, tak u BBcodů byl hlavní problém, potom byl problém třeba při změně avatara, podpisu, když někdo citoval příspěvek...
Starám se o projekt phpBB.cz od doby, kdy jsem jej zachránil před zaniknutím. Pomůžete mi a dostaneme jej zase nahoru?
Přes soukromé zprávy neposkytuji podporu. Napište do fóra, kde vyřešení problému může pomoci ostatním.

Marek111

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Marek111 » pon 15. kvě 2017 23:17:12

Cele forum mi ide v poriadku, ovela viac zmien som spravil, ale vlastne bbtagy mi nejdu ani na php7 ani php7.1

problem tam je ze ked ukladam prispevok, tak tag sa uklada do posts tabulky [NAZOVTAGU:UID]blabla[/NAZOVTAGU:UID], no na php7 a php7.1 sa ulozi ale [NAZOVTAGU]blabla[/NAZOVTAGU] chyba tam to uid, inac tento postup co si sem dal je dost naprd, hlavne ked je takto cely v kope necitatelny, vecsina vecsich casti sa neda dohladat, taktiez tam je ovela viac zmien, jedina co som nedokazal ale identifikovat je len vlastny bbtag, tie default co tam su idu bez problemov a pri ukladani prispevku sa ulozi aj s UID, ale vlastne nie. Pricom stare prispevky kde su vlastne bbtagy sa zobrazuju spravne, len tie nove ulozi bez UID

Eva004
Junior tým
Junior tým
Příspěvky: 213
Registrován: úte 12. črc 2016 23:35:19
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Eva004 » ned 04. čer 2017 23:01:17

Dej link na fórum.
NEPOSKYTUJI podporu přes ICQ/Jabber/SZ ani jiné komunikační protokoly! => ptej se zde na fóru
NEPOSKYTUJI podporu pro warez fóra.
HLEDEJ před položením dotazu.
NEURGUJ podporu.

Marek111

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Marek111 » pon 05. čer 2017 21:38:45

Nemyslim si ze ti to k niecomu bude ked nemas pristup k zdrojakom, problem je v preg_replace_callback kde neprida tag do prispevku s UID [NAZOVTAGU:UID]blabla[/NAZOVTAGU:UID] ale len [NAZOVTAGU]blabla[/NAZOVTAGU] a tym padom nefunguju vlastne bbtagy, ale zjavne ten problem nevyriesim, kedze phpbb3.0 nie je vobec pripravene na php7.1 cize to uz ani neriesim nejako. Docital som sa pouzit tam eval ale to konci s chybou

Ak si dobre pametam tak je to v /includes/bbcode.php

Kód: Vybrat vše

if (is_callable($preg['replace'])) {
    $message = preg_replace_callback($preg['search'], $preg['replace'], $message);
} else {
    $message = preg_replace($preg['search'], $preg['replace'], $message);
}
pricom $message = preg_replace_callback($preg['search'], $preg['replace'], $message);

pricom som skusil pouzit aj function( $match ) aj v spojeni s eval a nic z toho, bud to konci chybami, alebo neodosle ani prispevok, alebo alebo, to je jedina vec ktora je mimo, inac vsetko ostatne funguje bez problemov po uprave zdrojakov

Marek111

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Marek111 » pon 05. čer 2017 21:40:37

Skusil som aj upravit tu funkciu v podobnom duchu ako je toto

Kód: Vybrat vše

$this->message = preg_replace_callback($regexp, function($matches) use($replacement) {eval('$str=' . $replacement[1]); return $str;}, $this->message);
vracia ze prispevok neobsahuje ziadny prispevok, cely problem je len tam

Eva004
Junior tým
Junior tým
Příspěvky: 213
Registrován: úte 12. črc 2016 23:35:19
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Eva004 » ned 11. čer 2017 13:31:15

Když neuvedeš link, nemá cenu se tím zabývat.
NEPOSKYTUJI podporu přes ICQ/Jabber/SZ ani jiné komunikační protokoly! => ptej se zde na fóru
NEPOSKYTUJI podporu pro warez fóra.
HLEDEJ před položením dotazu.
NEURGUJ podporu.

jerrry
Příspěvky: 147
Registrován: stř 05. lis 2008 23:27:51

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od jerrry » stř 29. srp 2018 11:33:28

Ahoj, dlouho jsem tu nebyl, ale koukám, že (asi) nový admin tomu zde opět vdechnul život, což je super :-) měl bych jeden dotaz, mám aktuálně phpBB 3.0.x fórum s asi 320 tisíci příspěvky, nicméně na serveru mi běží ještě WordPress web s vysokou návštěvností, ale kvůli phpBB jsme zůstávali na PHP 5, nicméně se sedmičkou je tam fakt dramatický nárůst výkonu a rychlosti aplikace. Chci se tedy zeptat, nejnovější phpBB 3.2.2 už s PHP 7.2.x je kompatibilní, že? Problémy jsou jen u phpBB 3.0.x a 3.1.x? Původně jsem chtěl zkusit tento návod na úpravu kompatibility phpBB 3.0.x fóra, ale asi nakonec udělám update na nejnovější, jen bych potřeboval vědět, zda to šlape?

Eva004
Junior tým
Junior tým
Příspěvky: 213
Registrován: úte 12. črc 2016 23:35:19
Kontaktovat uživatele:

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od Eva004 » stř 29. srp 2018 12:57:09

Můžeš zkusit. Verze phpBB 3.2.2 by měla být s PHP 7 kompatibilní.
NEPOSKYTUJI podporu přes ICQ/Jabber/SZ ani jiné komunikační protokoly! => ptej se zde na fóru
NEPOSKYTUJI podporu pro warez fóra.
HLEDEJ před položením dotazu.
NEURGUJ podporu.

jerrry
Příspěvky: 147
Registrován: stř 05. lis 2008 23:27:51

Re: Jak rozjet phpBB 3.0 na PHP7?

Příspěvek od jerrry » stř 29. srp 2018 23:27:22

díky, mě právě zajímalo, zda s tím přímo někdo nemá zkušenost, než to hodím na takhle velký web/fórum :)

Odpovědět