#5703·panel

[Bug]: php artisan hangs indefinitely during initial setup due to unresolved telemetry/update HTTP connection timeout

Author: KolyanCat128Created Aug 14, 2026Updated Aug 14, 2026

Current Behavior

During a fresh installation of Pterodactyl Panel (v1.15.0) on a clean server with PHP 8.3, running any php artisan command (even basic ones like php artisan --version or php artisan config:clear) causes the CLI process to hang indefinitely. It produces no text output and throws no error exceptions.

By profiling the execution using strace and ss -tupn, we discovered that the Laravel framework triggers an outbound HTTPS request during the early bootstrap phase inside Guzzle's Uri.php component. It attempts to connect to the external IP 185.102.217.65:443 (CDN77/Datacamp) for telemetry or update checks.

If this IP subnet filters or drops TLS handshakes in the my region/network, the process enters an infinite polling loop: poll([{fd=7, events=POLLIN}, {fd=5, events=POLLIN}], 2, 1000) = 0 (Timeout) recvfrom(7, ..., MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)

Because no short connect timeout is explicitly set for this early hook, it completely freezes the thread and breaks the initial installation flow.

Expected Behavior

The php artisan commands should execute successfully even if external network telemetry or update API endpoints are completely blocked, heavily filtered, or unreachable.

The early-stage Guzzle HTTP clients or service providers inside the application kernel should have a strict, short connection timeout enforced (e.g., connect_timeout => 3, timeout => 5). If the telemetry endpoint fails to respond quickly, the panel must catch the network exception, fail gracefully, and allow the local CLI command to finish its execution instead of freezing the process.

Steps to Reproduce

  1. Set up a clean Linux server (Debian/Ubuntu) and install PHP 8.3.
  2. Download and extract Pterodactyl Panel v1.15.0 into the /var/www/pterodactyl directory.
  3. Generate a basic .env file following the official documentation steps.
  4. Attempt to run any initial artisan setup command, for example: php artisan --version or php artisan config:clear.
  5. Notice that the CLI process hangs completely and indefinitely right after initializing Guzzle's URI helpers (Uri.php), trying to establish an outbound TLS connection to 185.102.217.65:443 without any strict timeout limits.

Panel Version

1.15.0

Wings Version

Not installed yet (Issue occurs during initial panel setup)

Games and/or Eggs Affected

None / Not applicable (Core Panel issue)

Docker Image

None / Not applicable

Error Logs

bash
The command completely freezes without generating standard Laravel logs. 
Here is the relevant `strace php artisan --version` loop dump where it hangs indefinitely on Guzzle's network socket polling:

...
newfstatat(AT_FDCWD, "/var/www/pterodactyl/vendor/composer/../guzzlehttp/psr7/src/Uri.php", {st_mode=S_IFREG|0644, st_size=26661, ...}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, "/var/www/pterodactyl/vendor/guzzlehttp/psr7/src/Uri.php", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=26661, ...}) = 0
read(5, "<?php\n\ndeclare(strict_types=1);\n"..., 26661) = 26661
close(5)                                = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x716c82045330}, NULL, 8) = 0
recvfrom(7, 0x566ad98d62b3, 5, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x716c82045330}, NULL, 8) = 0
poll([{fd=7, events=POLLIN}, {fd=5, events=POLLIN}], 2, 1000) = 0 (Timeout)
... [Repeats endlessly due to missing explicit connect timeout]

Is there an existing issue for this?

  • I have searched the existing issues before opening this issue. I understand that maintainers may close this issue without communication if I have not provided sufficient information.