我使用guzzlehttp/guzzle包在Laravel 8中。升级到PHP8之后,我得到:
Symfony\Component\ErrorHandler\Error\FatalError: Invalid opcode 117/2/0. in file ../vendor/defuse/php-encryption/src/Core.php on line 412
composer.json:
"require": {
"php": "^8.0",
"doctrine/dbal": "^2.12.1",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^8.12",
"laravel/passport": "^10.0",
"laravel/tinker": "^2.5",
"ext-json": "*"
},
"require-dev": {
"facade/ignition": "^2.5",
"fakerphp/faker": "^1.9.1",
"mockery/mockery": "^1.4.2",
"nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^9.3.3"
},php -v
PHP 8.0.0RC3 (cli) (built: Oct 31 2020 17:06:57) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v8.0.0RC3, Copyright (c), by Zend TechnologiesUPD 1如果我在
$this->client = new \GuzzleHttp\Client; $response = $this->client->post(...)之前调用opcache_reset ();,它可以工作。UPD 2$ service php8.0-fpm reload-没有帮助。UPD 3重新引导服务器没有帮助。
我怎么才能解决这个问题?
发布于 2020-11-27 21:27:00
问题不是guzzlehttp/guzzle。问题是,在Ubuntu20.10 PHP8上没有清除opcache。如果在调用opcache_reset();之前执行new \GuzzleHttp\Client;,那么一切都正常。
发布于 2020-11-30 21:18:54
正如@NikiC在上面的评论中说的那样,它实际上是PHP中的一个bug。修复这里:https://github.com/php/php-src/commit/fdb05b92bfb62906771fd41f3fcdbc184d89e3fe
每次重置opcache并不是一个好主意,因为如果要这样做,您最好没有任何opcache。
https://stackoverflow.com/questions/65033643
复制相似问题