Skip to content

Missing quoting of PHP binary path in watcher commands #7422

@qisthidev

Description

@qisthidev

Execute the command and paste the result below.

Command: uname -a && php -v && composer info | grep hyperf && php --ri swoole

Darwin m1 24.5.0 Darwin Kernel Version 24.5.0: Tue Apr 22 19:48:46 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T8103 arm64
PHP 8.4.8 (cli) (built: Jun  6 2025 00:20:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.8, Copyright (c), by Zend Technologies
friendsofhyperf/command-signals    3.1.58            The signals component for Hyperf Command.
friendsofhyperf/pretty-console     3.1.48            The pretty console component for Hyperf.
friendsofhyperf/tinker             3.1.48            The Powerful REPL for Hyperf.
hyperf/code-parser                 3.1.52            A code parser component for Hyperf.
hyperf/codec                       3.1.42            A codec component for Hyperf.
hyperf/collection                  3.1.52            Hyperf Collection package which come from illuminate...
hyperf/command                     3.1.56            Command for hyperf
hyperf/conditionable               3.1.42            Hyperf Macroable package which come from illuminate/...
hyperf/config                      3.1.42            An independent component that provides configuration...
hyperf/context                     3.1.42            A coroutine/application context library.
hyperf/contract                    3.1.42            The contracts of Hyperf.
hyperf/coordinator                 3.1.42            Hyperf Coordinator
hyperf/coroutine                   3.1.54            Hyperf Coroutine
hyperf/database                    3.1.56            A flexible database library.
hyperf/database-sqlite             3.1.50            The sqlite driver for hyperf/database.
hyperf/db-connection               3.1.44            A hyperf db connection handler for hyperf/database.
hyperf/devtool                     3.1.51            A Devtool for Hyperf.
hyperf/di                          3.1.53            A DI for Hyperf.
hyperf/dispatcher                  3.1.42            A HTTP Server for Hyperf.
hyperf/engine                      2.14.0            Coroutine engine provided by swoole.
hyperf/engine-contract             1.13.0            Contract for Coroutine Engine
hyperf/event                       3.1.42            an event manager that implements PSR-14.
hyperf/exception-handler           3.1.42            Exception handler for hyperf
hyperf/framework                   3.1.42            A coroutine framework that focuses on hyperspeed and...
hyperf/http-message                3.1.48            microservice framework base on swoole
hyperf/http-server                 3.1.55            A HTTP Server for Hyperf.
hyperf/macroable                   3.1.42            Hyperf Macroable package which come from illuminate/...
hyperf/memory                      3.1.53            An independent component that use to operate and man...
hyperf/model-listener              3.1.42            A model listener for Hyperf.
hyperf/paginator                   3.1.49            A paginator component for hyperf.
hyperf/pipeline                    3.1.42            Hyperf Macroable package which come from illuminate/...
hyperf/pool                        3.1.42            An independent universal connection pool component.
hyperf/process                     3.1.48            A process component for hyperf.
hyperf/redis                       3.1.56            A redis component for hyperf.
hyperf/resource                    3.1.54            A api resource component for hyperf.
hyperf/serializer                  3.1.42            A serializer component for Hyperf.
hyperf/server                      3.1.42            A base server library for Hyperf.
hyperf/signal                      3.1.47            A signal library for Hyperf.
hyperf/stdlib                      3.1.42            A stdlib component for Hyperf.
hyperf/stringable                  3.1.55            Hyperf Stringable package which come from illuminate...
hyperf/support                     3.1.51            A support component for Hyperf.
hyperf/tappable                    3.1.42            Hyperf Macroable package which come from illuminate/...
hyperf/testing                     3.1.55            Testing for hyperf
hyperf/utils                       3.1.42            A tools package that could help developer solved the...
hyperf/view                        3.1.42            A view library for Hyperf.
hyperf/view-engine                 3.1.52           
hyperf/watcher                     3.1.54            Hot reload watcher for Hyperf

swoole

Swoole => enabled
Author => Swoole Team <team@swoole.com>
Version => 6.0.2
Built => Mar 22 2025 05:27:08
coroutine => enabled with boost asm context
kqueue => enabled
rwlock => enabled
openssl => OpenSSL 3.4.1 11 Feb 2025
dtls => enabled
http2 => enabled
json => enabled
curl-native => enabled
curl-version => 8.14.1
zlib => 1.2.12
brotli => E16781312/D16781312

Directive => Local Value => Master Value
swoole.enable_library => On => On
swoole.enable_fiber_mock => Off => Off
swoole.enable_preemptive_scheduler => Off => Off
swoole.display_errors => On => On
swoole.use_shortname => On => On
swoole.unixsock_buffer_size => 262144 => 262144

Description:

The current watcher implementation breaks when the PHP binary path contains spaces (e.g., when using Laravel Herd on macOS with paths like /Users/username/Library/Application Support/Herd/bin/php84) due to missing quoting.

Steps To Reproduce:

  1. Install Laravel Herd or place PHP binary in a path with spaces
  2. Configure watcher to use that PHP binary
  3. Run php artisan watch
  4. Observe the sh: /Users/username/Library/Application: No such file or directory error

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions