在 WSL-Ubuntu 中 Docker 下安装 Hyperf
1、第一步:在 WSL 里创建本地项目目录(比如 ~/wwwroot/hyperf-skeleton)
ubuntu@DESKTOP-H4MGQIU:~/wwwroot$ mkdir -p ~/wwwroot/hyperf-skeleton
2、修改挂载目录,适配本地目录的路径。参考:Hyperf 官方文档 Docker 下开发 。
ubuntu@DESKTOP-H4MGQIU:~/wwwroot$ docker run --name hyperf \ -v ~/wwwroot/hyperf-skeleton:/data/project \ -w /data/project \ -p 9501:9501 -it \ --privileged -u root \ --entrypoint /bin/sh \ hyperf/hyperf:8.1-alpine-v3.18-swoole Unable to find image 'hyperf/hyperf:8.1-alpine-v3.18-swoole' locally 8.1-alpine-v3.18-swoole: Pulling from hyperf/hyperf 5715dfbf9dd7: Pull complete bfa571bff938: Pull complete 58de83433912: Pull complete 44cf07d57ee4: Pull complete 471a4d85c85c: Download complete Digest: sha256:3cbda08f3892507d760d31bba8b68aeb4b916333055bbf05cf46ea18c67fc935 Status: Downloaded newer image for hyperf/hyperf:8.1-alpine-v3.18-swoole /data/project #
3、在容器内创建项目 ,创建项目失败,报错:Your requirements could not be resolved to an installable set of packages.。如图1

/data/project # composer create-project hyperf/hyperf-skeleton
Creating a "hyperf/hyperf-skeleton" project at "./hyperf-skeleton"
Installing hyperf/hyperf-skeleton (v3.1.3)
<ul>
<li>Downloading hyperf/hyperf-skeleton (v3.1.3)</li>
<li>Installing hyperf/hyperf-skeleton (v3.1.3): Extracting archive
Created project in /data/project/hyperf-skeleton</li>
</ul>
<blockquote>@php -r "file_exists('.env') || copy('.env.example', '.env');"
Installer\Script::install
Setting up optional packages
Setup data and cache dir
Removing installer development dependencies</blockquote>
What time zone do you want to setup ?
[n] Default time zone for php.ini
Make your selection or type a time zone name, like Asia/Shanghai (n):
Asia/Shanghai
Do you want to use Database (MySQL Client) ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (yes): y
<ul>
<li>Adding package hyperf/database (~3.1.0)</li>
<li>Adding package hyperf/db-connection (~3.1.0)
Do you want to use Redis Client ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (yes): y</li>
<li>Adding package hyperf/redis (~3.1.0)</li>
<li>Copying config/autoload/redis.php
Which RPC protocol do you want to use ?
[1] JSON RPC with Service Governance
[2] JSON RPC
[3] gRPC
[n] None of the above
Make your selection or type a composer package name and version (n): n
Which config center do you want to use ?
[1] Apollo
[2] Aliyun ACM
[3] ETCD
[4] Nacos
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/constants component ?
[y] yes
[n] None of the above
Make your selection (n): y</li>
<li>Adding package hyperf/constants (~3.1.0)</li>
<li>Copying app/Constants/ErrorCode.php</li>
<li>Copying app/Exception/BusinessException.php
Do you want to use hyperf/async-queue component ? (A simple redis queue component)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): y</li>
<li>Adding package hyperf/async-queue (~3.1.0)</li>
<li>Copying config/autoload/async_queue.php</li>
<li>Copying app/Process/AsyncQueueConsumer.php</li>
<li>Copying app/Listener/QueueHandleListener.php</li>
<li>Copying config/autoload/redis.php
Do you want to use hyperf/amqp component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/model-cache component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/elasticsearch component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/tracer component ? (An open tracing protocol component, adapte with Zipkin etc.)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use pestphp/pest component ? (Pest is a testing framework with a focus on simplicity,
meticulously designed to bring back the joy of testing in PHP.)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): y</li>
<li>Adding package pestphp/pest (^2.34)</li>
<li>Copying test/Feature/ExampleTest.php</li>
<li>Copying test/Unit/ExampleTest.php</li>
<li>Copying test/Pest.php</li>
<li>Copying test/TestCase.php
Remove installer
Removing composer.lock from .gitignore
Removing Expressive installer classes, configuration, tests and docs
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
<ul>
<li>Root composer.json requires pestphp/pest ^2.34 -> satisfiable by pestphp/pest[v2.34.0, …, 2.x-dev].</li>
<li>brianium/paratest[v7.9.0, …, v7.11.2] require php ~8.3.0 || ~8.4.0 -> your php version (8.1.27) does not satisfy that requirement.</li>
<li>brianium/paratest[v7.12.0, …, 7.x-dev] require php ~8.3.0 || ~8.4.0 || ~8.5.0 -> your php version (8.1.27) does not satisfy that requirement.</li>
<li>brianium/paratest[v7.4.3, …, v7.5.7] require php ~8.2.0 || ~8.3.0 -> your php version (8.1.27) does not satisfy that requirement.</li>
<li>brianium/paratest[v7.4.8, …, v7.8.4] require php ~8.2.0 || ~8.3.0 || ~8.4.0 -> your php version (8.1.27) does not satisfy that requirement.</li>
<li>brianium/paratest[v7.8.5, …, 7.8.x-dev] require php ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0 -> your php version (8.1.27) does not satisfy that requirement.</li>
<li>pestphp/pest v2.34.0 conflicts with phpunit/phpunit 10.5.63.</li>
<li>pestphp/pest v2.34.0 conflicts with phpunit/phpunit 10.5.x-dev.</li>
<li>pestphp/pest v2.34.0 requires phpunit/phpunit ^10.5.10 -> satisfiable by phpunit/phpunit[10.5.62, 10.5.63, 10.5.x-dev].</li>
<li>pestphp/pest v2.34.3 requires brianium/paratest ^7.4.3 -> satisfiable by brianium/paratest[v7.4.3, …, 7.x-dev].</li>
<li>pestphp/pest[v2.36.1, …, 2.x-dev] require php ^8.2.0 -> your php version (8.1.27) does not satisfy that requirement.</li>
<li>Conclusion: don't install pestphp/pest v2.34.1 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.34.2 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.34.4 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.34.5 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.34.6 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.34.9 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.35.0 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.35.1 (conflict analysis result)</li>
<li>Conclusion: don't install pestphp/pest v2.36.0 (conflict analysis result)</li>
</ul>
</li>
</ul>
/data/project #
4、报错核心原因如下:
PHP 版本不匹配:容器里的 PHP 是 8.1.27,但 Pest(测试框架)的新版本要求 PHP ≥ 8.2,我的 PHP 8.1 满足不了;
依赖连锁冲突:Pest 依赖的 brianium/paratest、phpunit/phpunit 等组件,也要求更高版本的 PHP,最终导致 Composer 无法解析出一套能安装的依赖包。
5、最快解决方法(放弃安装 Pest,先跑通项目),退出当前失败的安装流程:重新执行创建项目命令(跳过 Pest),选择 n。提示: Project directory “/data/project/hyperf-skeleton” is not empty.。在容器的 /data/project 目录下,执行清空命令:rm -rf ./* ./.??* 。如图2

/data/project # composer create-project hyperf/hyperf-skeleton Creating a "hyperf/hyperf-skeleton" project at "./hyperf-skeleton" In CreateProjectCommand.php line 368: Project directory "/data/project/hyperf-skeleton" is not empty. create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--no-audit] [--audit-format AUDIT-FORMAT] [--no-security-blocking] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package> [<directory> [<version>]]]
6、在容器内创建项目 在 遇见 pestphp/pest 时,选择 n,创建项目成功。
/data/project # composer create-project hyperf/hyperf-skeleton
Creating a "hyperf/hyperf-skeleton" project at "./hyperf-skeleton"
Installing hyperf/hyperf-skeleton (v3.1.3)
<ul>
<li>Installing hyperf/hyperf-skeleton (v3.1.3): Extracting archive
Created project in /data/project/hyperf-skeleton</li>
</ul>
<blockquote>@php -r "file_exists('.env') || copy('.env.example', '.env');"
Installer\Script::install
Setting up optional packages
Setup data and cache dir
Removing installer development dependencies</blockquote>
What time zone do you want to setup ?
[n] Default time zone for php.ini
Make your selection or type a time zone name, like Asia/Shanghai (n):
Asia/Shanghai
Do you want to use Database (MySQL Client) ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (yes): y
<ul>
<li>Adding package hyperf/database (~3.1.0)</li>
<li>Adding package hyperf/db-connection (~3.1.0)
Do you want to use Redis Client ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (yes): y</li>
<li>Adding package hyperf/redis (~3.1.0)</li>
<li>Copying config/autoload/redis.php
Which RPC protocol do you want to use ?
[1] JSON RPC with Service Governance
[2] JSON RPC
[3] gRPC
[n] None of the above
Make your selection or type a composer package name and version (n): n
Which config center do you want to use ?
[1] Apollo
[2] Aliyun ACM
[3] ETCD
[4] Nacos
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/constants component ?
[y] yes
[n] None of the above
Make your selection (n): y</li>
<li>Adding package hyperf/constants (~3.1.0)</li>
<li>Copying app/Constants/ErrorCode.php</li>
<li>Copying app/Exception/BusinessException.php
Do you want to use hyperf/async-queue component ? (A simple redis queue component)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): y</li>
<li>Adding package hyperf/async-queue (~3.1.0)</li>
<li>Copying config/autoload/async_queue.php</li>
<li>Copying app/Process/AsyncQueueConsumer.php</li>
<li>Copying app/Listener/QueueHandleListener.php</li>
<li>Copying config/autoload/redis.php
Do you want to use hyperf/amqp component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/model-cache component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/elasticsearch component ?
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use hyperf/tracer component ? (An open tracing protocol component, adapte with Zipkin etc.)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Do you want to use pestphp/pest component ? (Pest is a testing framework with a focus on simplicity,
meticulously designed to bring back the joy of testing in PHP.)
[y] yes
[n] None of the above
Make your selection or type a composer package name and version (n): n
Remove installer
Removing composer.lock from .gitignore
Removing Expressive installer classes, configuration, tests and docs
Loading composer repositories with package information
Updating dependencies
Lock file operations: 135 installs, 0 updates, 0 removals</li>
<li>Locking carbonphp/carbon-doctrine-types (3.2.0)</li>
<li>Locking clue/ndjson-react (v1.3.0)</li>
<li>Locking composer/pcre (3.3.2)</li>
<li>Locking composer/semver (3.4.4)</li>
<li>Locking composer/xdebug-handler (3.0.5)</li>
<li>Locking doctrine/inflector (2.1.0)</li>
<li>Locking doctrine/instantiator (1.5.0)</li>
<li>Locking evenement/evenement (v3.0.2)</li>
<li>Locking fidry/cpu-core-counter (1.3.0)</li>
<li>Locking fig/http-message-util (1.1.5)</li>
<li>Locking friendsofphp/php-cs-fixer (v3.94.2)</li>
<li>Locking graham-campbell/result-type (v1.1.4)</li>
<li>Locking guzzlehttp/guzzle (7.10.0)</li>
<li>Locking guzzlehttp/promises (2.3.0)</li>
<li>Locking guzzlehttp/psr7 (2.9.0)</li>
<li>Locking hamcrest/hamcrest-php (v2.1.1)</li>
<li>Locking hyperf/async-queue (v3.1.64)</li>
<li>Locking hyperf/cache (v3.1.67)</li>
<li>Locking hyperf/code-parser (v3.1.63)</li>
<li>Locking hyperf/codec (v3.1.63)</li>
<li>Locking hyperf/collection (v3.1.64)</li>
<li>Locking hyperf/command (v3.1.64)</li>
<li>Locking hyperf/conditionable (v3.1.63)</li>
<li>Locking hyperf/config (v3.1.63)</li>
<li>Locking hyperf/constants (v3.1.63)</li>
<li>Locking hyperf/context (v3.1.63)</li>
<li>Locking hyperf/contract (v3.1.63)</li>
<li>Locking hyperf/coordinator (v3.1.63)</li>
<li>Locking hyperf/coroutine (v3.1.65)</li>
<li>Locking hyperf/database (v3.1.67)</li>
<li>Locking hyperf/db-connection (v3.1.66)</li>
<li>Locking hyperf/devtool (v3.1.66)</li>
<li>Locking hyperf/di (v3.1.67)</li>
<li>Locking hyperf/dispatcher (v3.1.63)</li>
<li>Locking hyperf/engine (v2.15.0)</li>
<li>Locking hyperf/engine-contract (v1.14.0)</li>
<li>Locking hyperf/event (v3.1.63)</li>
<li>Locking hyperf/exception-handler (v3.1.63)</li>
<li>Locking hyperf/framework (v3.1.63)</li>
<li>Locking hyperf/guzzle (v3.1.66)</li>
<li>Locking hyperf/http-message (v3.1.65)</li>
<li>Locking hyperf/http-server (v3.1.65)</li>
<li>Locking hyperf/laminas-mime (v3.0.0)</li>
<li>Locking hyperf/logger (v3.1.63)</li>
<li>Locking hyperf/macroable (v3.1.63)</li>
<li>Locking hyperf/memory (v3.1.63)</li>
<li>Locking hyperf/model-listener (v3.1.63)</li>
<li>Locking hyperf/pipeline (v3.1.63)</li>
<li>Locking hyperf/pool (v3.1.66)</li>
<li>Locking hyperf/process (v3.1.63)</li>
<li>Locking hyperf/redis (v3.1.66)</li>
<li>Locking hyperf/serializer (v3.1.63)</li>
<li>Locking hyperf/server (v3.1.63)</li>
<li>Locking hyperf/stdlib (v3.1.63)</li>
<li>Locking hyperf/stringable (v3.1.65)</li>
<li>Locking hyperf/support (v3.1.65)</li>
<li>Locking hyperf/tappable (v3.1.63)</li>
<li>Locking hyperf/testing (v3.1.63)</li>
<li>Locking laminas/laminas-stdlib (3.20.0)</li>
<li>Locking mockery/mockery (1.6.12)</li>
<li>Locking monolog/monolog (3.10.0)</li>
<li>Locking myclabs/deep-copy (1.13.4)</li>
<li>Locking nesbot/carbon (2.73.0)</li>
<li>Locking nikic/fast-route (v1.3.0)</li>
<li>Locking nikic/php-parser (v4.19.5)</li>
<li>Locking phar-io/manifest (2.0.4)</li>
<li>Locking phar-io/version (3.2.1)</li>
<li>Locking php-di/phpdoc-reader (2.2.1)</li>
<li>Locking phpoption/phpoption (1.9.5)</li>
<li>Locking phpstan/phpstan (1.12.33)</li>
<li>Locking phpunit/php-code-coverage (10.1.16)</li>
<li>Locking phpunit/php-file-iterator (4.1.0)</li>
<li>Locking phpunit/php-invoker (4.0.0)</li>
<li>Locking phpunit/php-text-template (3.0.1)</li>
<li>Locking phpunit/php-timer (6.0.0)</li>
<li>Locking phpunit/phpunit (10.5.63)</li>
<li>Locking psr/clock (1.0.0)</li>
<li>Locking psr/container (2.0.2)</li>
<li>Locking psr/event-dispatcher (1.0.0)</li>
<li>Locking psr/http-client (1.0.3)</li>
<li>Locking psr/http-factory (1.1.0)</li>
<li>Locking psr/http-message (2.0)</li>
<li>Locking psr/http-server-handler (1.0.2)</li>
<li>Locking psr/http-server-middleware (1.0.2)</li>
<li>Locking psr/log (3.0.2)</li>
<li>Locking psr/simple-cache (3.0.0)</li>
<li>Locking ralouphie/getallheaders (3.0.3)</li>
<li>Locking react/cache (v1.2.0)</li>
<li>Locking react/child-process (v0.6.7)</li>
<li>Locking react/dns (v1.14.0)</li>
<li>Locking react/event-loop (v1.6.0)</li>
<li>Locking react/promise (v3.3.0)</li>
<li>Locking react/socket (v1.17.0)</li>
<li>Locking react/stream (v1.4.0)</li>
<li>Locking sebastian/cli-parser (2.0.1)</li>
<li>Locking sebastian/code-unit (2.0.0)</li>
<li>Locking sebastian/code-unit-reverse-lookup (3.0.0)</li>
<li>Locking sebastian/comparator (5.0.5)</li>
<li>Locking sebastian/complexity (3.2.0)</li>
<li>Locking sebastian/diff (5.1.1)</li>
<li>Locking sebastian/environment (6.1.0)</li>
<li>Locking sebastian/exporter (5.1.4)</li>
<li>Locking sebastian/global-state (6.0.2)</li>
<li>Locking sebastian/lines-of-code (2.0.2)</li>
<li>Locking sebastian/object-enumerator (5.0.0)</li>
<li>Locking sebastian/object-reflector (3.0.0)</li>
<li>Locking sebastian/recursion-context (5.0.1)</li>
<li>Locking sebastian/type (4.0.0)</li>
<li>Locking sebastian/version (4.0.1)</li>
<li>Locking swoole/ide-helper (5.1.8)</li>
<li>Locking swow/psr7-plus (v1.1.2)</li>
<li>Locking symfony/console (v6.4.35)</li>
<li>Locking symfony/deprecation-contracts (v3.6.0)</li>
<li>Locking symfony/event-dispatcher (v6.4.32)</li>
<li>Locking symfony/event-dispatcher-contracts (v3.6.0)</li>
<li>Locking symfony/filesystem (v6.4.34)</li>
<li>Locking symfony/finder (v6.4.34)</li>
<li>Locking symfony/http-foundation (v6.4.35)</li>
<li>Locking symfony/options-resolver (v6.4.30)</li>
<li>Locking symfony/polyfill-ctype (v1.33.0)</li>
<li>Locking symfony/polyfill-intl-grapheme (v1.33.0)</li>
<li>Locking symfony/polyfill-intl-normalizer (v1.33.0)</li>
<li>Locking symfony/polyfill-mbstring (v1.33.0)</li>
<li>Locking symfony/polyfill-php80 (v1.33.0)</li>
<li>Locking symfony/polyfill-php81 (v1.33.0)</li>
<li>Locking symfony/polyfill-php83 (v1.33.0)</li>
<li>Locking symfony/polyfill-php84 (v1.33.0)</li>
<li>Locking symfony/process (v6.4.33)</li>
<li>Locking symfony/service-contracts (v3.6.1)</li>
<li>Locking symfony/stopwatch (v6.4.24)</li>
<li>Locking symfony/string (v6.4.34)</li>
<li>Locking symfony/translation (v6.4.34)</li>
<li>Locking symfony/translation-contracts (v3.6.1)</li>
<li>Locking theseer/tokenizer (1.3.1)</li>
<li>Locking vlucas/phpdotenv (v5.6.3)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 135 installs, 0 updates, 0 removals</li>
<li>Downloading composer/pcre (3.3.2)</li>
<li>Downloading doctrine/inflector (2.1.0)</li>
<li>Downloading doctrine/instantiator (1.5.0)</li>
<li>Downloading symfony/deprecation-contracts (v3.6.0)</li>
<li>Downloading psr/container (2.0.2)</li>
<li>Downloading symfony/service-contracts (v3.6.1)</li>
<li>Downloading symfony/stopwatch (v6.4.24)</li>
<li>Downloading symfony/process (v6.4.33)</li>
<li>Downloading symfony/polyfill-php84 (v1.33.0)</li>
<li>Downloading symfony/polyfill-php81 (v1.33.0)</li>
<li>Downloading symfony/polyfill-php80 (v1.33.0)</li>
<li>Downloading symfony/polyfill-mbstring (v1.33.0)</li>
<li>Downloading symfony/options-resolver (v6.4.30)</li>
<li>Downloading symfony/finder (v6.4.34)</li>
<li>Downloading symfony/polyfill-ctype (v1.33.0)</li>
<li>Downloading symfony/filesystem (v6.4.34)</li>
<li>Downloading psr/event-dispatcher (1.0.0)</li>
<li>Downloading symfony/event-dispatcher-contracts (v3.6.0)</li>
<li>Downloading symfony/event-dispatcher (v6.4.32)</li>
<li>Downloading symfony/polyfill-intl-normalizer (v1.33.0)</li>
<li>Downloading symfony/polyfill-intl-grapheme (v1.33.0)</li>
<li>Downloading symfony/string (v6.4.34)</li>
<li>Downloading symfony/console (v6.4.35)</li>
<li>Downloading sebastian/diff (5.1.1)</li>
<li>Downloading react/event-loop (v1.6.0)</li>
<li>Downloading evenement/evenement (v3.0.2)</li>
<li>Downloading react/stream (v1.4.0)</li>
<li>Downloading react/promise (v3.3.0)</li>
<li>Downloading react/cache (v1.2.0)</li>
<li>Downloading react/dns (v1.14.0)</li>
<li>Downloading react/socket (v1.17.0)</li>
<li>Downloading react/child-process (v0.6.7)</li>
<li>Downloading fidry/cpu-core-counter (1.3.0)</li>
<li>Downloading psr/log (3.0.2)</li>
<li>Downloading composer/xdebug-handler (3.0.5)</li>
<li>Downloading composer/semver (3.4.4)</li>
<li>Downloading clue/ndjson-react (v1.3.0)</li>
<li>Downloading friendsofphp/php-cs-fixer (v3.94.2)</li>
<li>Downloading guzzlehttp/promises (2.3.0)</li>
<li>Downloading ralouphie/getallheaders (3.0.3)</li>
<li>Downloading psr/http-message (2.0)</li>
<li>Downloading psr/http-factory (1.1.0)</li>
<li>Downloading guzzlehttp/psr7 (2.9.0)</li>
<li>Downloading hyperf/tappable (v3.1.63)</li>
<li>Downloading hyperf/macroable (v3.1.63)</li>
<li>Downloading hyperf/conditionable (v3.1.63)</li>
<li>Downloading hyperf/stringable (v3.1.65)</li>
<li>Downloading hyperf/contract (v3.1.63)</li>
<li>Downloading hyperf/collection (v3.1.64)</li>
<li>Downloading hyperf/engine-contract (v1.14.0)</li>
<li>Downloading hyperf/engine (v2.15.0)</li>
<li>Downloading hyperf/context (v3.1.63)</li>
<li>Downloading hyperf/coroutine (v3.1.65)</li>
<li>Downloading hyperf/support (v3.1.65)</li>
<li>Downloading phpoption/phpoption (1.9.5)</li>
<li>Downloading graham-campbell/result-type (v1.1.4)</li>
<li>Downloading vlucas/phpdotenv (v5.6.3)</li>
<li>Downloading php-di/phpdoc-reader (2.2.1)</li>
<li>Downloading nikic/php-parser (v4.19.5)</li>
<li>Downloading hyperf/stdlib (v3.1.63)</li>
<li>Downloading hyperf/pipeline (v3.1.63)</li>
<li>Downloading hyperf/code-parser (v3.1.63)</li>
<li>Downloading hyperf/di (v3.1.67)</li>
<li>Downloading hyperf/coordinator (v3.1.63)</li>
<li>Downloading hyperf/command (v3.1.64)</li>
<li>Downloading hyperf/codec (v3.1.63)</li>
<li>Downloading hyperf/async-queue (v3.1.64)</li>
<li>Downloading psr/simple-cache (3.0.0)</li>
<li>Downloading hyperf/cache (v3.1.67)</li>
<li>Downloading hyperf/config (v3.1.63)</li>
<li>Downloading hyperf/constants (v3.1.63)</li>
<li>Downloading hyperf/pool (v3.1.66)</li>
<li>Downloading hyperf/event (v3.1.63)</li>
<li>Downloading symfony/translation-contracts (v3.6.1)</li>
<li>Downloading symfony/translation (v6.4.34)</li>
<li>Downloading psr/clock (1.0.0)</li>
<li>Downloading carbonphp/carbon-doctrine-types (3.2.0)</li>
<li>Downloading nesbot/carbon (2.73.0)</li>
<li>Downloading hyperf/database (v3.1.67)</li>
<li>Downloading hyperf/model-listener (v3.1.63)</li>
<li>Downloading fig/http-message-util (1.1.5)</li>
<li>Downloading hyperf/framework (v3.1.63)</li>
<li>Downloading hyperf/db-connection (v3.1.66)</li>
<li>Downloading hyperf/devtool (v3.1.66)</li>
<li>Downloading psr/http-client (1.0.3)</li>
<li>Downloading swow/psr7-plus (v1.1.2)</li>
<li>Downloading laminas/laminas-stdlib (3.20.0)</li>
<li>Downloading hyperf/laminas-mime (v3.0.0)</li>
<li>Downloading hyperf/http-message (v3.1.65)</li>
<li>Downloading psr/http-server-handler (1.0.2)</li>
<li>Downloading psr/http-server-middleware (1.0.2)</li>
<li>Downloading hyperf/dispatcher (v3.1.63)</li>
<li>Downloading hyperf/exception-handler (v3.1.63)</li>
<li>Downloading guzzlehttp/guzzle (7.10.0)</li>
<li>Downloading hyperf/guzzle (v3.1.66)</li>
<li>Downloading monolog/monolog (3.10.0)</li>
<li>Downloading hyperf/logger (v3.1.63)</li>
<li>Downloading hyperf/memory (v3.1.63)</li>
<li>Downloading hyperf/process (v3.1.63)</li>
<li>Downloading hyperf/redis (v3.1.66)</li>
<li>Downloading hyperf/serializer (v3.1.63)</li>
<li>Downloading hyperf/server (v3.1.63)</li>
<li>Downloading symfony/polyfill-php83 (v1.33.0)</li>
<li>Downloading symfony/http-foundation (v6.4.35)</li>
<li>Downloading sebastian/version (4.0.1)</li>
<li>Downloading sebastian/type (4.0.0)</li>
<li>Downloading sebastian/recursion-context (5.0.1)</li>
<li>Downloading sebastian/object-reflector (3.0.0)</li>
<li>Downloading sebastian/object-enumerator (5.0.0)</li>
<li>Downloading sebastian/global-state (6.0.2)</li>
<li>Downloading sebastian/exporter (5.1.4)</li>
<li>Downloading sebastian/environment (6.1.0)</li>
<li>Downloading sebastian/comparator (5.0.5)</li>
<li>Downloading sebastian/code-unit (2.0.0)</li>
<li>Downloading sebastian/cli-parser (2.0.1)</li>
<li>Downloading phpunit/php-timer (6.0.0)</li>
<li>Downloading phpunit/php-text-template (3.0.1)</li>
<li>Downloading phpunit/php-invoker (4.0.0)</li>
<li>Downloading phpunit/php-file-iterator (4.1.0)</li>
<li>Downloading theseer/tokenizer (1.3.1)</li>
<li>Downloading sebastian/lines-of-code (2.0.2)</li>
<li>Downloading sebastian/complexity (3.2.0)</li>
<li>Downloading sebastian/code-unit-reverse-lookup (3.0.0)</li>
<li>Downloading phpunit/php-code-coverage (10.1.16)</li>
<li>Downloading phar-io/version (3.2.1)</li>
<li>Downloading phar-io/manifest (2.0.4)</li>
<li>Downloading myclabs/deep-copy (1.13.4)</li>
<li>Downloading phpunit/phpunit (10.5.63)</li>
<li>Downloading nikic/fast-route (v1.3.0)</li>
<li>Downloading hyperf/http-server (v3.1.65)</li>
<li>Downloading hyperf/testing (v3.1.63)</li>
<li>Downloading hamcrest/hamcrest-php (v2.1.1)</li>
<li>Downloading mockery/mockery (1.6.12)</li>
<li>Downloading phpstan/phpstan (1.12.33)</li>
<li>Downloading swoole/ide-helper (5.1.8)</li>
<li>Installing composer/pcre (3.3.2): Extracting archive</li>
<li>Installing doctrine/inflector (2.1.0): Extracting archive</li>
<li>Installing doctrine/instantiator (1.5.0): Extracting archive</li>
<li>Installing symfony/deprecation-contracts (v3.6.0): Extracting archive</li>
<li>Installing psr/container (2.0.2): Extracting archive</li>
<li>Installing symfony/service-contracts (v3.6.1): Extracting archive</li>
<li>Installing symfony/stopwatch (v6.4.24): Extracting archive</li>
<li>Installing symfony/process (v6.4.33): Extracting archive</li>
<li>Installing symfony/polyfill-php84 (v1.33.0): Extracting archive</li>
<li>Installing symfony/polyfill-php81 (v1.33.0): Extracting archive</li>
<li>Installing symfony/polyfill-php80 (v1.33.0): Extracting archive</li>
<li>Installing symfony/polyfill-mbstring (v1.33.0): Extracting archive</li>
<li>Installing symfony/options-resolver (v6.4.30): Extracting archive</li>
<li>Installing symfony/finder (v6.4.34): Extracting archive</li>
<li>Installing symfony/polyfill-ctype (v1.33.0): Extracting archive</li>
<li>Installing symfony/filesystem (v6.4.34): Extracting archive</li>
<li>Installing psr/event-dispatcher (1.0.0): Extracting archive</li>
<li>Installing symfony/event-dispatcher-contracts (v3.6.0): Extracting archive</li>
<li>Installing symfony/event-dispatcher (v6.4.32): Extracting archive</li>
<li>Installing symfony/polyfill-intl-normalizer (v1.33.0): Extracting archive</li>
<li>Installing symfony/polyfill-intl-grapheme (v1.33.0): Extracting archive</li>
<li>Installing symfony/string (v6.4.34): Extracting archive</li>
<li>Installing symfony/console (v6.4.35): Extracting archive</li>
<li>Installing sebastian/diff (5.1.1): Extracting archive</li>
<li>Installing react/event-loop (v1.6.0): Extracting archive</li>
<li>Installing evenement/evenement (v3.0.2): Extracting archive</li>
<li>Installing react/stream (v1.4.0): Extracting archive</li>
<li>Installing react/promise (v3.3.0): Extracting archive</li>
<li>Installing react/cache (v1.2.0): Extracting archive</li>
<li>Installing react/dns (v1.14.0): Extracting archive</li>
<li>Installing react/socket (v1.17.0): Extracting archive</li>
<li>Installing react/child-process (v0.6.7): Extracting archive</li>
<li>Installing fidry/cpu-core-counter (1.3.0): Extracting archive</li>
<li>Installing psr/log (3.0.2): Extracting archive</li>
<li>Installing composer/xdebug-handler (3.0.5): Extracting archive</li>
<li>Installing composer/semver (3.4.4): Extracting archive</li>
<li>Installing clue/ndjson-react (v1.3.0): Extracting archive</li>
<li>Installing friendsofphp/php-cs-fixer (v3.94.2): Extracting archive</li>
<li>Installing guzzlehttp/promises (2.3.0): Extracting archive</li>
<li>Installing ralouphie/getallheaders (3.0.3): Extracting archive</li>
<li>Installing psr/http-message (2.0): Extracting archive</li>
<li>Installing psr/http-factory (1.1.0): Extracting archive</li>
<li>Installing guzzlehttp/psr7 (2.9.0): Extracting archive</li>
<li>Installing hyperf/tappable (v3.1.63): Extracting archive</li>
<li>Installing hyperf/macroable (v3.1.63): Extracting archive</li>
<li>Installing hyperf/conditionable (v3.1.63): Extracting archive</li>
<li>Installing hyperf/stringable (v3.1.65): Extracting archive</li>
<li>Installing hyperf/contract (v3.1.63): Extracting archive</li>
<li>Installing hyperf/collection (v3.1.64): Extracting archive</li>
<li>Installing hyperf/engine-contract (v1.14.0): Extracting archive</li>
<li>Installing hyperf/engine (v2.15.0): Extracting archive</li>
<li>Installing hyperf/context (v3.1.63): Extracting archive</li>
<li>Installing hyperf/coroutine (v3.1.65): Extracting archive</li>
<li>Installing hyperf/support (v3.1.65): Extracting archive</li>
<li>Installing phpoption/phpoption (1.9.5): Extracting archive</li>
<li>Installing graham-campbell/result-type (v1.1.4): Extracting archive</li>
<li>Installing vlucas/phpdotenv (v5.6.3): Extracting archive</li>
<li>Installing php-di/phpdoc-reader (2.2.1): Extracting archive</li>
<li>Installing nikic/php-parser (v4.19.5): Extracting archive</li>
<li>Installing hyperf/stdlib (v3.1.63): Extracting archive</li>
<li>Installing hyperf/pipeline (v3.1.63): Extracting archive</li>
<li>Installing hyperf/code-parser (v3.1.63): Extracting archive</li>
<li>Installing hyperf/di (v3.1.67): Extracting archive</li>
<li>Installing hyperf/coordinator (v3.1.63): Extracting archive</li>
<li>Installing hyperf/command (v3.1.64): Extracting archive</li>
<li>Installing hyperf/codec (v3.1.63): Extracting archive</li>
<li>Installing hyperf/async-queue (v3.1.64): Extracting archive</li>
<li>Installing psr/simple-cache (3.0.0): Extracting archive</li>
<li>Installing hyperf/cache (v3.1.67): Extracting archive</li>
<li>Installing hyperf/config (v3.1.63): Extracting archive</li>
<li>Installing hyperf/constants (v3.1.63): Extracting archive</li>
<li>Installing hyperf/pool (v3.1.66): Extracting archive</li>
<li>Installing hyperf/event (v3.1.63): Extracting archive</li>
<li>Installing symfony/translation-contracts (v3.6.1): Extracting archive</li>
<li>Installing symfony/translation (v6.4.34): Extracting archive</li>
<li>Installing psr/clock (1.0.0): Extracting archive</li>
<li>Installing carbonphp/carbon-doctrine-types (3.2.0): Extracting archive</li>
<li>Installing nesbot/carbon (2.73.0): Extracting archive</li>
<li>Installing hyperf/database (v3.1.67): Extracting archive</li>
<li>Installing hyperf/model-listener (v3.1.63): Extracting archive</li>
<li>Installing fig/http-message-util (1.1.5): Extracting archive</li>
<li>Installing hyperf/framework (v3.1.63): Extracting archive</li>
<li>Installing hyperf/db-connection (v3.1.66): Extracting archive</li>
<li>Installing hyperf/devtool (v3.1.66): Extracting archive</li>
<li>Installing psr/http-client (1.0.3): Extracting archive</li>
<li>Installing swow/psr7-plus (v1.1.2): Extracting archive</li>
<li>Installing laminas/laminas-stdlib (3.20.0): Extracting archive</li>
<li>Installing hyperf/laminas-mime (v3.0.0): Extracting archive</li>
<li>Installing hyperf/http-message (v3.1.65): Extracting archive</li>
<li>Installing psr/http-server-handler (1.0.2): Extracting archive</li>
<li>Installing psr/http-server-middleware (1.0.2): Extracting archive</li>
<li>Installing hyperf/dispatcher (v3.1.63): Extracting archive</li>
<li>Installing hyperf/exception-handler (v3.1.63): Extracting archive</li>
<li>Installing guzzlehttp/guzzle (7.10.0): Extracting archive</li>
<li>Installing hyperf/guzzle (v3.1.66): Extracting archive</li>
<li>Installing monolog/monolog (3.10.0): Extracting archive</li>
<li>Installing hyperf/logger (v3.1.63): Extracting archive</li>
<li>Installing hyperf/memory (v3.1.63): Extracting archive</li>
<li>Installing hyperf/process (v3.1.63): Extracting archive</li>
<li>Installing hyperf/redis (v3.1.66): Extracting archive</li>
<li>Installing hyperf/serializer (v3.1.63): Extracting archive</li>
<li>Installing hyperf/server (v3.1.63): Extracting archive</li>
<li>Installing symfony/polyfill-php83 (v1.33.0): Extracting archive</li>
<li>Installing symfony/http-foundation (v6.4.35): Extracting archive</li>
<li>Installing sebastian/version (4.0.1): Extracting archive</li>
<li>Installing sebastian/type (4.0.0): Extracting archive</li>
<li>Installing sebastian/recursion-context (5.0.1): Extracting archive</li>
<li>Installing sebastian/object-reflector (3.0.0): Extracting archive</li>
<li>Installing sebastian/object-enumerator (5.0.0): Extracting archive</li>
<li>Installing sebastian/global-state (6.0.2): Extracting archive</li>
<li>Installing sebastian/exporter (5.1.4): Extracting archive</li>
<li>Installing sebastian/environment (6.1.0): Extracting archive</li>
<li>Installing sebastian/comparator (5.0.5): Extracting archive</li>
<li>Installing sebastian/code-unit (2.0.0): Extracting archive</li>
<li>Installing sebastian/cli-parser (2.0.1): Extracting archive</li>
<li>Installing phpunit/php-timer (6.0.0): Extracting archive</li>
<li>Installing phpunit/php-text-template (3.0.1): Extracting archive</li>
<li>Installing phpunit/php-invoker (4.0.0): Extracting archive</li>
<li>Installing phpunit/php-file-iterator (4.1.0): Extracting archive</li>
<li>Installing theseer/tokenizer (1.3.1): Extracting archive</li>
<li>Installing sebastian/lines-of-code (2.0.2): Extracting archive</li>
<li>Installing sebastian/complexity (3.2.0): Extracting archive</li>
<li>Installing sebastian/code-unit-reverse-lookup (3.0.0): Extracting archive</li>
<li>Installing phpunit/php-code-coverage (10.1.16): Extracting archive</li>
<li>Installing phar-io/version (3.2.1): Extracting archive</li>
<li>Installing phar-io/manifest (2.0.4): Extracting archive</li>
<li>Installing myclabs/deep-copy (1.13.4): Extracting archive</li>
<li>Installing phpunit/phpunit (10.5.63): Extracting archive</li>
<li>Installing nikic/fast-route (v1.3.0): Extracting archive</li>
<li>Installing hyperf/http-server (v3.1.65): Extracting archive</li>
<li>Installing hyperf/testing (v3.1.63): Extracting archive</li>
<li>Installing hamcrest/hamcrest-php (v2.1.1): Extracting archive</li>
<li>Installing mockery/mockery (1.6.12): Extracting archive</li>
<li>Installing phpstan/phpstan (1.12.33): Extracting archive</li>
<li>Installing swoole/ide-helper (5.1.8): Extracting archive
27 package suggestions were added by new dependencies, use <code>composer suggest</code> to see details.
Generating optimized autoload files</li>
</ul>
<blockquote>rm -rf runtime/container
114 packages you are using are looking for funding.
Use the <code>composer fund</code> command to find out more!
No security vulnerability advisories found.
/data/project #
近期评论