Aktualizace projektu pro PHP7
- scientific
- Člen | 94
Ahoj všem, dostal se mi do ruky projekt, který mám zmigrovat na novější webhostingový server s PHP7, problém je v tom, že mi log hlásí následující:
[Wed Apr 01 11:07:52.490995 2020] [php7:error] [pid 20621] [client :52581] PHP Fatal error: Cannot use 'Object' as class name as it is reserved in /var/www/html/projekt/vendor/nette/utils/src/Utils/Object.php on line 54
Abych to vyřešil, je zřejmě potřeba aktualizovat prostřednictvím „composer update“, to se ale též neobejde bez problému:
# composer update
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- jkuchar/pdfresponse dev-master requires nette/http ~2.4.0|~3.0.0 -> satisfiable by nette/http[v2.4.0, v2.4.1, v2.4.10, v2.4.11, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.4.x-dev, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.x-dev] but these conflict with your requirements or minimum-stability.
- jkuchar/pdfresponse dev-master requires nette/http ~2.4.0|~3.0.0 -> satisfiable by nette/http[v2.4.0, v2.4.1, v2.4.10, v2.4.11, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.4.x-dev, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.x-dev] but these conflict with your requirements or minimum-stability.
- Installation request for jkuchar/pdfresponse dev-master -> satisfiable by jkuchar/pdfresponse[dev-master].
Máte prosím někdo pro mě tip, jak to na rozchodit na PHP72 ideálně prostřednictvím aktualizace? Jsem noob, takže bych prosil polopatický postup jak obecně na to, konkrétní návody už si zkusím případně dohledat.
Editoval scientific (1. 4. 2020 13:48)
- Ondřej Kubíček
- Člen | 494
tak záleží jak máš nastavený composer, potřebuješ minimálně nette 2.4, tipuji že máš starší, tu knihovnu pdfresponse máš v dev verzi, takže ta se ti aktualizuje, ale samotné nette ne, nebo možná jen setinková verze, těžko říct bez composeru
- scientific
- Člen | 94
Posílám ještě nějaké informace, které si myslíš, že tě zajímají:
# composer -V
Composer version 1.10.1 2020–03–13 20:34:27
# cat composer.json
{
"name": "nette/sandbox",
"description": "The sandbox is a pre-packaged Nette Framework project, basic configured structure for your application.",
"homepage": "http://nette.org",
"type": "project",
"license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
"authors": [
{
"name": "David Grudl",
"homepage": "http://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "http://nette.org/contributors"
}
],
"require": {
"php": ">= 5.3.7",
"nette/application": "~2.3.0",
"nette/bootstrap": "~2.3.0",
"nette/caching": "~2.3.0",
"nette/database": "~2.3.0",
"nette/di": "~2.3.0",
"nette/finder": "~2.3.0",
"nette/forms": "~2.3.0",
"nette/http": "~2.3.0",
"nette/mail": "~2.3.0",
"nette/robot-loader": "~2.3.0",
"nette/safe-stream": "~2.3.0",
"nette/security": "~2.3.0",
"nette/utils": "~2.3.0",
"latte/latte": "~2.3.0",
"tracy/tracy": "~2.3.0",
"dg/adminer-custom": "~1.6",
"jkuchar/pdfresponse": "dev-master"
},
"require-dev": {
"nette/tester": "~1.3"
}
}
cat composer.lock
Je moc dlouhý, ale podle mě tě stejně nezajímá, případně mohu
doposlat.
Děkuji ti za snahu mi pomoci.
Editoval scientific (1. 4. 2020 12:01)
- scientific
- Člen | 94
No jak píšu v úvodu, právěže nefunguje:
[Wed Apr 01 11:07:52.490995 2020] [php7:error] [pid 20621] [client :52581] PHP Fatal error: Cannot use 'Object' as class name as it is reserved in /var/www/html/projekt/vendor/nette/utils/src/Utils/Object.php on line 54
Editoval scientific (1. 4. 2020 13:54)
- David Grudl
- Nette Core | 8218
Jo, jasně. Možná by se dalo všechny Nette\Object přejmenovat na Nette\LegacyObject a nainstalovat nette/deprecated.
- Marek Bartoš
- Nette Blogger | 1263
Problém je v té externí knihovně, která spolu s odstraněním Object
přestala podporovat starší Nette
https://github.com/…c1c7c7950c09
Zvolil bych fork a tu podporu Nette 2.3 si doplnit, pokud nechceš aktualizovat Nette
- scientific
- Člen | 94
@DavidGrudl
Uživatel @Mabar mi poradil v vendor/jkuchar/PDFresponse/PDFresponse.php
nahradit Nette/Objedct za „Nette/SmartObject“, čímž se mi vyřešil
problém se „composer update“
- Removing jkuchar/pdfresponse (dev-master 5133fbe)
- Installing jkuchar/pdfresponse (dev-master f14993a): Cloning f14993a735
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
setasign/fpdi suggests installing setasign/fpdf (FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured.)
Package nette/reflection is abandoned, you should avoid using it. No replacement was suggested.
Nyní bych se hádám ještě měl zbavit abstraktní třídy Object v vendor/nette/utils/src/Utils/Object.php:52 Tak, že ji vlastně mohu beztrestně přejmenovat na „LegacyObject“?
- abstract class Object
+ abstract class LegacyObject
Tím pádem bycch nemusel forkovat to PDFresponse.php, jen uvnitř přepsat Název třídy?:
- use Nette\Object;
+ use Nette\LegacyObject;
Chápu to správně? Upravit jméno třídy potom musím všude napříč
Nette, jako třeba tady:
File: …/nette/caching/src/Caching/Storages/FileStorage.php:17
Editoval scientific (1. 4. 2020 17:34)
- David Grudl
- Nette Core | 8218
Do vendoru nezasahuj. Tady ti nezbývá než aktualizovat na Nette 2.4.
Ale v samotné aplikaci se zbav Nette\Object. Buď náhradou za traitu SmartObject, nebo přejmenování na LegacyObject a doinstalováním balíčku nette/deprecated, který tuto třídu obsahuje.
- scientific
- Člen | 94
To jsem udělal:
- Použil jsem v samotné aplikaci jkuchar/pdfresponse Nette\SmartObject namísto Nette\Object.
- Aktualizovat v composer.json „2.3“ → „2.4“
- Spustil s úspěšným dokončením „composer update“
Můj problém to ale nevyřešilo, Tracy hlásí (Protože abstraktní třída, která je použita v 29 souborech pořád existuje, ale zárveň si mi sdělil, řže ve vendor mám upravit jen tu samotnou aplikaci „jkuchar/pdfresponse“, na nic dalšího nesahat.):
Compile Error
Cannot use 'Object' as class name as it is reserved search►
Source file
File: .../html/projekt/vendor/nette/utils/src/Utils/Object.php:52
42: * prototype property. The syntax for adding a new method is:
43: * <code>
44: * MyClass::extensionMethod('newMethod', function (MyClass $obj, $arg, ...) { ... });
45: * $obj = new MyClass;
46: * $obj->newMethod($x);
47: * </code>
48: *
49: * @property-read Nette\Reflection\ClassType|\ReflectionClass $reflection
50: * @deprecated use trait Nette\SmartObject
51: */
52: abstract class Object
53: {
54:
55: /**
56: * Access to reflection.
Nemám odkomentovat ten řádek @deprecated use trait Nette\SmartObject ?
Děkuji za další nasměrování.
P.S. Jinak díky chlape za super Framework, teprve se s ním učím, mám k němu hodně výhrad, ale všechny jistě pramení z mé nevědomosti, budu se snažit všechno pochopit, abych došel do fáze, kdy ho začnu používat rád. Každopádně velký respekt, doposud sem nevěděl, že je to tvoje práce, též děkuji i komunitě, co ti pomáhá s vývojem.
Editoval scientific (1. 4. 2020 20:25)
- scientific
- Člen | 94
No Vlastně když se mi povedlo zaktualizovat z 2.3 → 2.4, tak bych asi mohl pokračovat na 3.0 a tak dále, dokud problém s třídou „Objekt“ nepomine? Protože po aktualizaci na 2.4 mi tracy pořád řve, že „Object“ se ta třída jmenovat nemůže.
#composer info
dg/adminer-custom v1.21.0 Customization for Adminer, the best database management tool written...
jkuchar/pdfresponse dev-master f14993a PdfResponse is wrapper of mPDF for Nette.
latte/latte v2.4.8 ☕ Latte: the intuitive and fast template engine for those who want...
mpdf/mpdf v8.0.5 PHP library generating PDF files from UTF-8 encoded HTML
myclabs/deep-copy 1.9.5 Create deep copies (clones) of your objects
nette/application v2.4.14 🏆 Nette Application: a full-stack component-based MVC kernel for ...
nette/bootstrap v2.4.6 ? Nette Bootstrap: the simple way to configure and bootstrap your Ne...
nette/caching v2.4.7 Nette Caching Component
nette/component-model v2.3.1 Nette Component Model
nette/database v2.4.9 💾 Nette Database: layer with a familiar PDO-like API but much mor...
nette/di v2.4.14 ? Nette Dependency Injection Container: Flexible, compiled and full-...
nette/finder v2.4.2 ? Nette Finder: find files and directories with an intuitive API.
nette/forms v2.4.10 ?? Nette Forms: generating, validating and processing secure forms i...
nette/http v2.4.11 ? Nette Http: abstraction for HTTP request, response and session. Pr...
nette/mail v2.4.6 ? Nette Mail: handy email creation and transfer library for PHP with...
nette/neon v3.0.1 🍸 Nette NEON: encodes and decodes NEON file format.
nette/php-generator v3.0.5 ? Nette PHP Generator: generates neat PHP code for you. Supports new...
nette/reflection v2.4.2 Nette Reflection: docblock annotations parser and common reflection ...
nette/robot-loader v2.4.4 ? Nette RobotLoader: high performance and comfortable autoloader tha...
nette/safe-stream v2.4.1 Nette SafeStream: atomic and safe manipulation with files via native...
nette/security v2.4.4 ? Nette Security: provides authentication, authorization and a role-...
nette/tester v1.7.2 Nette Tester: enjoyable unit testing in PHP with code coverage repor...
nette/utils v2.4.10 ? Nette Utils: lightweight utilities for string & array manipulation...
paquettg/php-html-parser 2.2.1 An HTML DOM parser. It allows you to manipulate HTML. Find tags on a...
paquettg/string-encode 1.0.1 Facilitating the process of altering string encoding in PHP.
paragonie/random_compat v9.99.99 PHP 5.x polyfill for random_bytes() and random_int() from PHP 7
psr/log 1.1.3 Common interface for logging libraries
setasign/fpdi v2.3.2 FPDI is a collection of PHP classes facilitating developers to read ...
tracy/tracy v2.4.18 ? Tracy: the addictive tool to ease debugging PHP code for cool deve...
#
Přitom na stránce https://doc.nette.org/…tions/to-2-4 se píše, že tam funguje právě SmartObject jako náhrada za Object. Tak nechápu, proč mi to pořád nejde.
Editoval scientific (1. 4. 2020 20:28)
- David Grudl
- Nette Core | 8218
Zaktualizuj jen nette/utils na 2.5. Tam už Nette\Object není. Místo toho je tam věc, která by ti měla pomoct odhalit, kde se Object ještě používá.
- scientific
- Člen | 94
*Hotov, já vím, kde se Nette\Object používá, jen nevím k čemu mi ta informace má být, když nesmím upravovat nic ve vendor. *
Nyní mi tracy hlásí toto, ale mám zákaz to ve vendor upravovat, tak nevím co dál (takže to ve finále upravit můžu ručně upravit na Nette\SmartObject?):
Exception
Replace deprecated Nette\Object with trait Nette\SmartObject in /var/www/html/bill/vendor/nette/caching/src/Caching/Storages/FileStorage.php:17 search►
Source file
Call stack
inner-code {closure}(arguments)
.../nette/caching/src/Caching/Storages/FileStorage.php:17 source spl_autoload_call(arguments)
7:
8: namespace Nette\Caching\Storages;
9:
10: use Nette;
11: use Nette\Caching\Cache;
12:
13:
14: /**
15: * Cache file storage.
16: */
17: class FileStorage extends Nette\Object implements Nette\Caching\IStorage
18: {
Kde všude je děděný Nette\Object jsem věděl už předtím, pomocí
grep -rlw "extends Nette\\Object" /var/www/html/projekt/
Aktuální stav:
# composer info
Do not run Composer as root/super user! See https://getcomposer.org/root for details
dg/adminer-custom v1.21.0 Customization for Adminer, the best database management tool written...
jkuchar/pdfresponse dev-master f14993a PdfResponse is wrapper of mPDF for Nette.
latte/latte v2.4.8 ☕ Latte: the intuitive and fast template engine for those who want...
mpdf/mpdf v8.0.5 PHP library generating PDF files from UTF-8 encoded HTML
myclabs/deep-copy 1.9.5 Create deep copies (clones) of your objects
nette/application v2.4.14 🏆 Nette Application: a full-stack component-based MVC kernel for ...
nette/bootstrap v2.4.6 ? Nette Bootstrap: the simple way to configure and bootstrap your Ne...
nette/caching v2.4.7 Nette Caching Component
nette/component-model v2.4.0 ⚛ Nette Component Model
nette/database v2.4.9 💾 Nette Database: layer with a familiar PDO-like API but much mor...
nette/di v2.4.16 💎 Nette Dependency Injection Container: Flexible, compiled and fu...
nette/finder v2.4.2 ? Nette Finder: find files and directories with an intuitive API.
nette/forms v2.4.10 ?? Nette Forms: generating, validating and processing secure forms i...
nette/http v2.4.11 ? Nette Http: abstraction for HTTP request, response and session. Pr...
nette/mail v2.4.6 ? Nette Mail: handy email creation and transfer library for PHP with...
nette/neon v3.0.1 🍸 Nette NEON: encodes and decodes NEON file format.
nette/php-generator v3.3.4 🐘 Nette PHP Generator: generates neat PHP code for you. Supports ...
nette/reflection v2.4.2 Nette Reflection: docblock annotations parser and common reflection ...
nette/robot-loader v2.4.4 ? Nette RobotLoader: high performance and comfortable autoloader tha...
nette/safe-stream v2.4.1 Nette SafeStream: atomic and safe manipulation with files via native...
nette/security v2.4.4 ? Nette Security: provides authentication, authorization and a role-...
nette/tester v1.7.2 Nette Tester: enjoyable unit testing in PHP with code coverage repor...
nette/utils v2.5.4 🛠 Nette Utils: lightweight utilities for string & array manipulat...
paquettg/php-html-parser 2.2.1 An HTML DOM parser. It allows you to manipulate HTML. Find tags on a...
paquettg/string-encode 1.0.1 Facilitating the process of altering string encoding in PHP.
paragonie/random_compat v9.99.99 PHP 5.x polyfill for random_bytes() and random_int() from PHP 7
psr/log 1.1.3 Common interface for logging libraries
setasign/fpdi v2.3.2 FPDI is a collection of PHP classes facilitating developers to read ...
tracy/tracy v2.4.18 ? Tracy: the addictive tool to ease debugging PHP code for cool deve...
#
Editoval scientific (1. 4. 2020 21:00)
- David Grudl
- Nette Core | 8218
Vendor se opravuje tím, že aktualizuješ knihovny Composerem. Ruční úprava by ti k ničemu nebyla, protože by ji Composer hned smazal.
Takže zaktualizuj ještě nette/caching na 2.5.
- scientific
- Člen | 94
Jo takhle, chápu.
Už to funguje.
Děkuji moc za pomoc.
Editoval scientific (2. 4. 2020 12:49)