Проблема с Nette после обновления до PHP 7.4.6

#php #xampp #nette

#php #xampp #nette

Вопрос:

после обновления PHP с версии 7.3 до версии 7.4.6. все, что у меня есть в Nette, выдает это сообщение: Trying to access array offset on value of type bool В PHP 7.3. у меня все работало (даже более сложные проекты). Проверка на 100% в порядке. По совету форума Nette я также обновил Nette до версии 3.0, но она все та же. Где мне следует искать ошибку?

 Notice

Trying to access array offset on value of type bool search► skip error►
Source file
File: ...vendornettedisrcDIContainerLoader.php:109

 99:                throw new NetteIOException("Unable to include '$file'.");
100:            }
101:            flock($handle, LOCK_UN);
102:        }
103:    
104:    
105:        private function isExpired($file, amp;$updatedMeta = null)
106:        {
107:            if ($this->autoRebuild) {
108:                $meta = @unserialize((string) file_get_contents("$file.meta")); // @ - file may not exist
**109:                $orig = $meta[2];**
110:                return empty($meta[0])
111:                    || DependencyChecker::isExpired(...$meta)
112:                    || ($orig !== $meta[2] amp;amp; $updatedMeta = serialize($meta));
113:            }
Call stack
...vendornettedisrcDIContainerLoader.php:68 source  NetteDIContainerLoader->isExpired(arguments)

...vendornettedisrcDIContainerLoader.php:47 source  NetteDIContainerLoader->loadFile(arguments)

...nettebootstrapsrcBootstrapConfigurator.php:267 source  NetteDIContainerLoader->load(arguments)

...nettebootstrapsrcBootstrapConfigurator.php:242 source  NetteConfigurator->loadContainer()

C:xampphtdocshello-worldappbootstrap.php:20 source  NetteConfigurator->createContainer()

C:xampphtdocshello-worldwwwindex.php:3 source  require(arguments)

Variables
Exception
Environment
HTTP request
HTTP response
Report generated at 2020/08/23 03:10:12
http://localhost/hello-world/
PHP 7.4.6
Apache/2.4.43 (Win64) OpenSSL/1.1.1g PHP/7.4.6
Tracy 2.5.2
  

Вот изображение стека ошибок.

Ответ №1:

Похоже, что unserialize функция завершилась с ошибкой, поэтому она вернулась false . И когда строка после него пытается использовать индекс, она прерывается.

Заглядывая в nette/di репозиторий, это было исправлено в nette/di версии 3.0.1. Убедитесь, что вы обновили и эту зависимость.