Update PHP a chyby typu: Error: Call to undefined method ReflectionMethod::isPrivate()
- fordo.pytlik
- Člen | 26
Ahoj,
po updatu na PHP 7.1 (z PHP 7.0) se mi na produkci začalo objevovat milion chyb typu:
Error: Call to undefined method ReflectionMethod::isPrivate() in (..)vendor/nette/utils/src/Utils/ObjectMixin.php:292
Error: Call to undefined method ReflectionProperty::getDocComment() in (..)/vendor/nette/application/src/Application/UI/ComponentReflection.php:236
Nette\MemberAccessException: Cannot write to a read-only property Nette\Application\UI\MethodReflection::$name. in (..)/vendor/nette/utils/src/Utils/SmartObject.php:167
Nette\MemberAccessException: Cannot write to a read-only property Nette\Reflection\Method::$name. in (..)/vendor/nette/utils/src/Utils/SmartObject.php:155
Zdá se, že se to děje náhodně. Osobně se mi to nikdy nestalo, ale mám hlášení od uživatelů i spoustu záznamů právě v logu. Na lokále se mi to taky nepodařilo nasimulovat, děje se to pouze na produkci.
Narazil jsem na diskuzi, kde se zmiňuje, že restart Apache pomůže… no těžko říct, spíš ne. Tím že se to děje pouze náhodně, tak nevím, další den se to znovu opakuje.
EDIT: – procházel jsem ještě error.log
a narazil jsem
i na další „zvláštní“ chyby:
PHP Warning: fopen(): Unable to find the wrapper "php" - did you forget to enable it when you configured PHP?
Call to undefined method Nette\Utils\DateTime::setTimeZone(), did you mean getTimezone()?
To mi taky hlava nebere… wrapper PHP by měl být build-in, a Nette\Utils\DateTime obsahuje fci setTimeZone() poděděnou od předka…
Editoval fordo.pytlik (30. 10. 2017 0:23)
- fordo.pytlik
- Člen | 26
Opravdu nikdo neví? Jsem z toho skutečně zoufalej. Restart nepomáhá a na další den se to děje znovu…
- fordo.pytlik
- Člen | 26
ldown napsal(a):
Mám stejný problém. Na AWS, AMI Linux.
Asi už je „trochu pozdě“, ale třeba by se mohlo hodit na co jsme přišli. Prakticky se jednalo o nějakou vnitřní chybu v PHP. Bylo to způsobeno tím, jak se spouštělo PHP – tohle za mě řešil hosting, takže tomu vůbec nerozumím.
- Lukes
- Silver Partner | 68
php
EDIT: – procházel jsem ještě error.log a narazil jsem i na další „zvláštní“ chyby:PHP Warning: fopen(): Unable to find the wrapper „php“ – did you forget to enable it when you configured PHP?
Call to undefined method Nette\Utils\DateTime::setTimeZone(), did you mean getTimezone()?
To mi taky hlava nebere… wrapper PHP by měl být build-in, a Nette\Utils\DateTime obsahuje fci setTimeZone() poděděnou od předka…
Tady máš velké Z v setTimeZone(). Mělo by tam být Z malé, což
ti možná Windows dovolí, ale Linux ne. → setTimezone()
Ještě se podívej jakou verzi Nette používáš a zda je kompatibilní s PHP 7.1
Editoval Lukes (21. 8. 2018 9:26)