Skip to content

Installation

Sascha Greuel edited this page Oct 2, 2026 · 3 revisions

Installation

Home · Quick start

Requirements

GameQ 5 requires:

  • PHP 8.1 or newer;
  • ext-curl for HTTP-backed and Epic Online Services queries;
  • ext-libxml, ext-simplexml, and ext-xml for XML protocols;
  • permission for the PHP process to make the required outbound UDP, TCP, TLS, and HTTP connections.

ext-bz2 is optional. It is only needed when a Source/A2S server returns a bzip2-compressed split response; uncompressed Source responses and other protocols work without it. If such a response is received without the extension, GameQ raises a protocol exception instead of attempting an unsafe or non-portable external-command fallback.

PHP 8.1 through 8.5 are covered by the regular test matrix. PHP 8.6 coverage is experimental until PHP 8.6 is stable.

Composer

Install the maintained fork with:

composer require softcreatr/gameq:^5.2

Then load Composer in your application:

require __DIR__ . '/vendor/autoload.php';

The package name is softcreatr/gameq. The upstream austinb/gameq package does not install this fork's version 5 code.

Run Composer's platform check on the deployment host if dependencies were built elsewhere:

composer check-platform-reqs

Standalone autoloader

Download a release archive, unpack it outside the web root when possible, and load the bundled autoloader:

require_once '/path/to/GameQ/src/GameQ/Autoloader.php';

Composer remains preferable because it validates required PHP extensions, reports the optional ext-bz2 suggestion, and produces a deterministic dependency graph.

Optional HTTP clients (5.2+)

GameQ's default HTTP transport uses ext-curl and needs no additional package. To integrate an application-managed Guzzle client, install Guzzle separately:

composer require guzzlehttp/guzzle:^7.9

The GameQ\Http\GuzzleClient adapter uses Guzzle's bundled PSR-17 factory. GameQ\Http\Psr18Client can instead wrap another PSR-18 client when compatible PSR-17 request and stream factories are available. Neither Guzzle nor the PSR interfaces are required when the default CurlClient is used.

See HTTP and directory protocols for injection examples, proxy behavior, and the transport's security requirements.

Verify the installation

<?php

require __DIR__ . '/vendor/autoload.php';

$gameQ = new GameQ\GameQ();

echo $gameQ::class, PHP_EOL;

If this cannot load GameQ\GameQ, verify the autoloader path and confirm that the web or worker process uses the same PHP installation as the command line.

Continue with the quick start.

Clone this wiki locally