PHP 7 a záchrana aplikací v Nette 2.0
- ludek
- Člen | 83
Dobrý den,
zavolali mě k serveru, kde byl proveden upgrade na Ubuntu 16.04.1, což znamená PHP 7.0.8.
Bohužel se zjistilo, že na tom běží několik aplikací postavených na Nette 2.0.12, které přestaly fungovat: bílá obrazovka, nic se nezaloguje, ani se nevytvoří žádná část smazané cache. Po překopírování na lokál s PHP 5.4 fungují. Cesta zpět není, jinam se to přesunout nedá, původní autor aplikací není k dosažení. Jedná se o samé evidence něčeho: práce s mysql, formuláře, max. odesílání emailů.
Mám prosím nějakou možnost, jak to rozběhnout?
- norbe
- Backer | 405
Máme několik starších projektů (nette 2.0.3), které jsme na php 7 rozjeli s minimem úprav.
Drobné shrnutí změn provedených v nette:
Nette\Diagnostics\BlueScreen::render
- odstraněn typehint \Exception u parametru
Nette\Diagnostics\Debugger::_exceptionHandler
- odstraněn typehint \Exception u parametru
- v místě kde je ošetřena chyba při logování přidán další
blok
catch (\Throwable $e)
Nette\loader.php
- smazáno volání
set_magic_quotes_runtime
,iconv_set_encoding
amb_internal_encoding
Driver pro mysql musí být mysqli (mysql zrušeno)
Pokud používáš dibi tak ještě smazat volání
set_magic_quotes_runtime
v něm.
- ludek
- Člen | 83
norbe napsal(a):
Nette\loader.php
- smazáno volání
set_magic_quotes_runtime
Moc díky. To co zabraňuje spuštění je právě
@set_magic_quotes_runtime(FALSE);
v libs/Nette/loader.php.
Po zakomentování se aplikace spustí a začnou se zobrazovat chyby
Laděnky.
Výsledek (edit):
Všechny aplikace se podařilo ihned zprovoznit provedením jen té jediné
změny v loader.php
.
Všechno funguje včetně spojení na databázi (všude se používá jen Nette\Database) i odesílání emailů.
Výjimkou byl jeden projekt, kde bylo nutno přepsat redirecty, pokud obsahovaly nějaké parametry.
Z původního
$this->redirect('default','1','2');
což do prvního parametru místo první hodnoty předalo název volané metody
(‚default‘).
bylo nutno přepsat na:
$this->redirect('default', array('par1'=>'1', 'par2'=>'2'));
Editoval ludek (12. 8. 2016 14:57)