Call to undefined method Nette\Utils\FileSystem::read()

n.u.r.v.
Člen | 485
+
0
-

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

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

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 | 474
+
+1
-

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

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

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

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