Call to undefined method Nette\Utils\FileSystem::read()
- n.u.r.v.
- Člen | 485
Ahoj, přechází z php 7 na php 8.2 a tak jsem chtěl pročistit a aktualizovat balíčky, ale nedaří se mi teď projekt spustit, dostávám chybu Call to undefined method Nette\Utils\FileSystem::read()
App\Bootstrap::boot()
->createContainer()
Můj composer.json:
{
"require": {
"nette/robot-loader": "^4.0",
"nette/application": "^3.1",
"nette/bootstrap": "^3.2",
"nette/caching": "^3.2",
"nette/database": "^3.1",
"nette/di": "^3.1",
"nette/finder": "^3.0",
"nette/forms": "^3.1",
"nette/http": "^3.2",
"nette/mail": "^4.0",
"nette/security": "^3.1",
"nette/utils": "^4.0",
"latte/latte": "^3.0",
"tracy/tracy": "^2.10",
"setasign/fpdf": "^1.8",
"jzechy/jquery-fileupload": "1.2",
"nextras/datagrid": "^2.0",
"microsoft/microsoft-graph": "^1.103",
"league/oauth2-client": "^2.7",
"google/apiclient": "^2.15",
"php-http/guzzle7-adapter": "^1.0"
},
"autoload": {
"classmap": ["app/Bootstrap.php"]
},
"minimum-stability": "stable",
"config": {
"platform": {
"php": "8.2"
},
"allow-plugins": {
"php-http/discovery": true
}
}
}
Děkuji za radu a pomoc co s tím…
- n.u.r.v.
- Člen | 485
tak už vím čím to asi je, resp co to způsobuje. zkusil jsem nainstalovat čistý nette/web-project a do něj doplňovat postupně další balíčky a vše ok, dokud jsem nedal nextras/datagrid – okamžitě spousta hlášek tohoto typu v composer :
např.: „Nette\Utils\Callback“ was found in both „C:\dev\www\xxx\vendor/nette/nette/Nette\Utils\Callback.php“ and „C:\dev\www\xxx\vendor/nette/utils/src\Utils\Callback.php“, the first will be used.
A pak už projekt nejde spustit a dostanu chybu jak jsem psal…
- n.u.r.v.
- Člen | 485
hmm, tak jsem se dostal dál, postupně jsem instaloval balíčky, takže výsledný composer.json je
"minimum-stability": "stable",
"config": {
"platform": {
"php": "8.0"
}
},
"require": {
"nette/application": "^2.4",
"nette/bootstrap": "^2.4",
"nette/http": "^2.4",
"nette/caching": "^2.5",
"nette/di": "^2.4",
"nette/mail": "^2.4",
"nette/database": "^2.4",
"nette/forms": "^2.4",
"nette/finder": "^2.6",
"nette/robot-loader": "^3.1",
"nette/security": "^2.4",
"nette/utils": "^2.5",
"latte/latte": "^2.4",
"setasign/fpdf": "^1.8",
"jzechy/jquery-fileupload": "^2.0",
"kdyby/forms-replicator": "^1.4",
"nextras/datagrid": "^3.0",
"microsoft/microsoft-graph": "^1.103",
"league/oauth2-client": "^2.7",
"google/apiclient": "^2.15",
"tracy/tracy": "^2.6"
}
Ale končím na chybě tracy: Attempt to modify property „data“ on null řádek v bootrstrap.php $configurator->enableDebugger(__DIR__ . ‚/../log‘);
- nightfish
- Člen | 519
V prvním příspěvku píšeš PHP 8.2, v (posledním)
composer.json
máš přes platform
nastavenou verzi
8.0, takže by asi bylo dobré si ujasnit, jak to vlastně je.
Co se chyby _Attempt to modify property…_ týká, tak bez věštecké koule nebo vypsaného callstacku/někam nahraného bugreportu z Tracy těžko soudit.
- Lumeriol
- Generous Backer | 64
Ahoj,
pokud chceš zůstat u nejnovějšího Nette, budeš muset aktualizovat/nahradit některé zastaralé balíčky, které jsou závislé na konkrétní verzi Nette a byly nahrazeny novějšími knihovnami.
Máš tam formReplicator, kvůli němuž jsi degradoval zpět na dvojkové Nette (nebo z něho vycházíš), stejně jako spíš udržovaný Nextras datagrid. Jquery-fileUpload je 6 let starý a závislý na Nette/Object, ten už tuším ve verzi 2.4 také není, nebo je Deprecated. Takže v tomto ohledu budeš mít s PHP 8.x problémy i do budoucna (ostatně jQuery bys měl ideálně zlikvidovat v následujících krocích upgradu projektu :)).
Zkus se podívat na Componette a dohledat vhodnější knihovny, přinejmenším Contributte balíčky by ti mohly pomoci vyřešit ten datagrid a replikátor. Případně můžeš použít na nějaký specifický problém komponenty Orisai.
Budeš muset udělat větší refaktoring svého kódu, jelikož i v samotném Nette došlo ke mnoha změnám (vyšly hlavní verze 3.0, 3.1 a nyní jsou některé balíčky už ve verzích 4.0, Latte je ve verzi 3.0 a nextras/datagrid jej nepodporuje)
- Marek Bartoš
- Nette Blogger | 1281
@Lumeriol Všechny ty balíky jsou aktualizované pro Nette 3 (akorát jzechy/jquery-fileupload nemá tagnutou verzi)
- n.u.r.v.
- Člen | 485
díky všem za info… no bohužel nám dali na server php verzi 8.2 a už není cesty zpět, ale není moc času to teď překopávat vše na novou verzi. Vím že s php 7.4 to šlapalo dobře, myslím že snad i php 8.0 fungovalo až na hlášky deprecated…
Takže myslíte, že není cesta, jak to rozchodit s těmi staršími balíčky (Nextras/datagrid, jzechy/Jquery-fileUpload)?
Zkusím ještě jestli na php 8.2 nerozchodím balíčky pro verzi 7.x