Signatur
Beschreibung
rpmexpand() wertet einen RPM-Makro-Ausdruck aus und gibt den expandierten Wert als Zeichenkette zurück. RPM-Makros sind Platzhalter oder Kurzbezeichnungen, die in der RPM-Paketverwaltung genutzt werden, um Systemwerte, Pfade oder Konfigurationswerte zu kapseln (z. B. %{_bindir} für das Verzeichnis der ausführbaren Dateien).
Diese Funktion ist Teil der PHP-RPM-Erweiterung (rpm) und setzt voraus, dass diese Erweiterung installiert und aktiviert ist. Sie ist vor allem auf Linux-Systemen mit RPM-basierter Paketverwaltung (z. B. Fedora, CentOS, RHEL, openSUSE) nützlich.
Typische Anwendungsfälle sind Skripte, die Systeminformationen aus der RPM-Konfiguration auslesen müssen, etwa um Installationspfade oder Build-Verzeichnisse dynamisch zu ermitteln, ohne diese hart zu kodieren.
Falls die Expansion fehlschlägt oder ein ungültiges Makro übergeben wird, gibt die Funktion false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $macro Pflicht | string | Der zu expandierende RPM-Makro-Ausdruck, z. B. %{_bindir} oder %{_sysconfdir}. Der Ausdruck wird an die RPM-Makro-Engine übergeben und ausgewertet. |
Rückgabewert
false zurückgegeben.Beispiele
Standardmäßige RPM-Systempfade abfragen
<?php
// Gibt das Verzeichnis für ausführbare Dateien aus (z. B. /usr/bin)
$bindir = rpmexpand('%{_bindir}');
if ($bindir !== false) {
echo 'Binärverzeichnis: ' . $bindir . PHP_EOL;
} else {
echo 'Makro konnte nicht expandiert werden.' . PHP_EOL;
}
// Konfigurationsverzeichnis ermitteln (z. B. /etc)
$sysconfdir = rpmexpand('%{_sysconfdir}');
echo 'Konfigurationsverzeichnis: ' . $sysconfdir . PHP_EOL;
// Präfix-Verzeichnis (z. B. /usr)
$prefix = rpmexpand('%{_prefix}');
echo 'Präfix: ' . $prefix . PHP_EOL;
RPM-Version und Build-Architektur auslesen
<?php
// Systemarchitektur ermitteln (z. B. x86_64)
$arch = rpmexpand('%{_arch}');
echo 'Architektur: ' . $arch . PHP_EOL;
// RPM-Version ermitteln
$rpmversion = rpmexpand('%{rpm_version}');
if ($rpmversion !== false) {
echo 'RPM-Version: ' . $rpmversion . PHP_EOL;
} else {
echo 'RPM-Version nicht verfügbar.' . PHP_EOL;
}
// Unbekanntes Makro – Fehlerbehandlung
$unknown = rpmexpand('%{_nicht_existierendes_makro}');
if ($unknown === false) {
echo 'Unbekanntes Makro konnte nicht aufgelöst werden.' . PHP_EOL;
} else {
echo 'Wert: ' . $unknown . PHP_EOL;
}
// Wichtig · Fallstricke
Verfügbarkeit: Diese Funktion steht nur zur Verfügung, wenn die PHP-RPM-Erweiterung (pecl/rpm) installiert und in der php.ini aktiviert ist. Auf Nicht-RPM-Systemen (z. B. Debian/Ubuntu) ist sie in der Regel nicht vorhanden.
Rückgabewert bei unbekannten Makros: Beachte, dass RPM bei unbekannten Makros unter Umständen den ursprünglichen Makro-String unverändert zurückgibt statt false. Prüfe den Rückgabewert daher gegebenenfalls auf Plausibilität.
Sicherheit: Übergib keine vom Benutzer unkontrollierten Eingaben an rpmexpand(), ohne diese zuvor zu validieren, da RPM-Makros mächtige Ausdrücke enthalten können.