Signatur
Beschreibung
rpmdbinfo() sucht in der lokalen RPM-Paketdatenbank nach einem Paket mit dem angegebenen Namen und liefert dessen Metadaten als assoziatives Array zurück. Ist das Paket nicht installiert, wird false zurückgegeben.
Die Funktion ist Teil der PHP-RPM-Erweiterung (rpmreader bzw. rpm) und steht nur auf Systemen zur Verfügung, auf denen RPM installiert und die entsprechende PHP-Erweiterung aktiviert ist (typischerweise RPM-basierte Linux-Distributionen wie Red Hat, CentOS, Fedora oder SUSE).
Die zurückgegebenen Paketinformationen umfassen unter anderem den vollständigen Paketnamen, die Version, die Release-Nummer, die Architektur, eine Kurzbeschreibung sowie das Installationsdatum. Dies kann nützlich sein, um Deployments, Systemvoraussetzungen oder Abhängigkeiten programmatisch zu prüfen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $name Pflicht | string | Der Name des RPM-Pakets, über das Informationen abgerufen werden sollen (z. B. "php" oder "openssl"). |
Rückgabewert
Name, Version, Release, Arch, Summary, InstallTime u. a.), wenn das Paket gefunden wurde. Ist das Paket nicht installiert oder tritt ein Fehler auf, wird false zurückgegeben.Beispiele
Paketinformationen eines installierten RPM-Pakets abrufen
<?php
$info = rpmdbinfo('openssl');
if ($info !== false) {
foreach ($info as $package) {
echo 'Name: ' . $package['Name'] . PHP_EOL;
echo 'Version: ' . $package['Version'] . PHP_EOL;
echo 'Release: ' . $package['Release'] . PHP_EOL;
echo 'Architektur: ' . $package['Arch'] . PHP_EOL;
echo 'Beschreibung: ' . $package['Summary'] . PHP_EOL;
}
} else {
echo 'Paket nicht gefunden oder Fehler beim Zugriff auf die RPM-Datenbank.';
}
Prüfen ob ein benötigtes Paket installiert ist
<?php
$required = ['curl', 'libxml2', 'openssl'];
foreach ($required as $pkg) {
$info = rpmdbinfo($pkg);
if ($info !== false) {
echo "[OK] {$pkg} ist installiert (Version: " . $info[0]['Version'] . ")" . PHP_EOL;
} else {
echo "[FEHLT] {$pkg} ist NICHT installiert!" . PHP_EOL;
}
}
// Wichtig · Fallstricke
Systemvoraussetzung: Die Funktion ist nur verfügbar, wenn die PHP-RPM-Erweiterung (rpm) installiert und aktiviert ist. Auf Debian/Ubuntu-basierten Systemen steht sie in der Regel nicht zur Verfügung.
Rückgabestruktur: Das Ergebnis ist ein Array von Arrays, da theoretisch mehrere Pakete mit demselben Namen (z. B. für verschiedene Architekturen) installiert sein können. Greife daher mit $info[0]['Version'] auf den ersten Treffer zu.
Berechtigungen: Der Zugriff auf die RPM-Datenbank erfordert grundsätzlich Leserechte auf /var/lib/rpm. In den meisten Standardkonfigurationen ist dies für den Webserver-Benutzer zulässig, sollte jedoch auf exponierten Systemen geprüft werden.