Update PHP a chyby typu: Error: Call to undefined method ReflectionMethod::isPrivate()

fordo.pytlik
Člen | 26
+
0
-

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
+
0
-

Opravdu nikdo neví? Jsem z toho skutečně zoufalej. Restart nepomáhá a na další den se to děje znovu…

ldown
Člen | 29
+
0
-

Mám stejný problém. Na AWS, AMI Linux.

fordo.pytlik
Člen | 26
+
0
-

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
+
0
-

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)

David Matějka
Moderator | 6445
+
+1
-

@Lukes tim to neni, volani funkci a metod je v php case insensitive

Lukes
Silver Partner | 68
+
0
-

David Matějka napsal(a):

@Lukes tim to neni, volani funkci a metod je v php case insensitive

Aha… Člověk je tak zvyklej z kompilovanych jazyků, že by ho to ani nenapadlo napsat.