Start · Sprachen · PHP · Referenz · xmlrpc_server_create

xmlrpc_server_create

Funktion

Erstellt eine neue XMLRPC-Server-Ressource, die anschließend für die Verarbeitung von XMLRPC-Anfragen verwendet werden kann.

seit PHP 4.1.0 Kategorie: xml

Signatur

xmlrpc_server_create(): resource

Beschreibung

xmlrpc_server_create() initialisiert eine neue XMLRPC-Server-Ressource. Diese Ressource dient als Grundlage für einen XMLRPC-Server und wird mit den weiteren xmlrpc_server_*-Funktionen verwendet, um Methoden zu registrieren und eingehende Anfragen zu verarbeiten.

Nach der Erstellung des Servers können mit xmlrpc_server_register_method() PHP-Funktionen oder -Methoden unter bestimmten XMLRPC-Methodennamen registriert werden. Eingehende XMLRPC-Anfragen werden anschließend mit xmlrpc_server_call_method() verarbeitet, das den Request-Body entgegennimmt und die entsprechende registrierte Callback-Funktion aufruft.

Das XMLRPC-Protokoll ermöglicht plattformübergreifende Remote-Procedure-Calls über HTTP. Es eignet sich für einfache Webservice-Implementierungen, bei denen Interoperabilität zwischen verschiedenen Sprachen und Plattformen gewünscht ist. Für modernere Webservices wird jedoch häufig SOAP oder REST bevorzugt.

Hinweis: Die xmlrpc_*-Funktionen der XMLRPC-Extension sind experimentell und in neueren PHP-Versionen als veraltet markiert. Für Produktionsumgebungen empfiehlt sich eine ausgereifte Bibliothek wie phpxmlrpc/phpxmlrpc.

Rückgabewert

Typ
resource
Beschreibung
Gibt eine XMLRPC-Server-Ressource zurück, die für nachfolgende xmlrpc_server_*-Funktionsaufrufe benötigt wird.

Beispiele

Einfacher XMLRPC-Server mit registrierter Methode

<?php
// XMLRPC-Server erstellen
$server = xmlrpc_server_create();

// Eine Methode registrieren, die zwei Zahlen addiert
xmlrpc_server_register_method($server, 'math.add', function($method, $params) {
    $a = $params[0];
    $b = $params[1];
    return $a + $b;
});

// Den eingehenden Request-Body lesen (z. B. aus php://input)
$request = file_get_contents('php://input');

// Request verarbeiten und Antwort zurückgeben
$response = xmlrpc_server_call_method($server, $request, null);

header('Content-Type: text/xml');
echo $response;

// Ressource freigeben
xmlrpc_server_destroy($server);
?>

XMLRPC-Server mit mehreren Methoden

<?php
$server = xmlrpc_server_create();

// Methode: Begrüßung
xmlrpc_server_register_method($server, 'greet.hello', function($method, $params) {
    $name = isset($params[0]) ? $params[0] : 'Welt';
    return 'Hallo, ' . $name . '!';
});

// Methode: Aktuellen Timestamp zurückgeben
xmlrpc_server_register_method($server, 'time.now', function($method, $params) {
    return time();
});

// Simulierter XMLRPC-Request für greet.hello
$fakeRequest = xmlrpc_encode_request('greet.hello', ['PHP-Entwickler']);

$response = xmlrpc_server_call_method($server, $fakeRequest, null);
echo $response;

xmlrpc_server_destroy($server);
?>

// Wichtig · Fallstricke

Experimenteller Status: Die eingebauten xmlrpc_*-Funktionen (basierend auf libxmlrpc-epi) sind seit ihrer Einführung als experimentell markiert und wurden in PHP 8.0 als deprecated eingestuft. Sie wurden in PHP 8.4 entfernt. Neuer Code sollte stattdessen auf eine externe Bibliothek wie phpxmlrpc/phpxmlrpc zurückgreifen.

Sicherheitshinweis: XMLRPC-Server sollten eingehende Daten stets validieren und sanitisieren, da die geparsten Werte aus nicht vertrauenswürdigen Quellen stammen können. Außerdem sollte die XMLRPC-Schnittstelle nicht ohne Authentifizierung öffentlich zugänglich sein, um unberechtigte Methodenaufrufe zu verhindern.