Add fix_ldap_ini.sh script to comment out 'extension=ldap.so' in PHP ini files
This commit is contained in:
Executable
+104
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# fix_ldap_ini.sh
|
||||
#
|
||||
# Entfernt 'extension=ldap.so' aus allen PHP-php.ini-Dateien auf den
|
||||
# angegebenen Servern und startet die betroffenen php-X.Y-fpm-Dienste neu.
|
||||
#
|
||||
# Verwendung: fix_ldap_ini.sh [-i <ssh-key>] <server1> [<server2> ...]
|
||||
|
||||
SSH_KEY="$HOME/.ssh/id_ed25519"
|
||||
SSH_OPTS=( -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=no )
|
||||
|
||||
# ---------- Hilfsfunktionen ----------
|
||||
|
||||
usage() {
|
||||
echo ""
|
||||
echo " Verwendung: $(basename "$0") [-i <ssh-key>] <server1> [<server2> ...]"
|
||||
echo ""
|
||||
exit 1
|
||||
}
|
||||
|
||||
info() { echo -e " \033[32m\033[1m[Info]\033[m $*"; }
|
||||
ok() { echo -e " \033[32m[ok]\033[m $*"; }
|
||||
warn() { echo -e " \033[33m\033[1m[Warn]\033[m $*"; }
|
||||
err() { echo -e " \033[31m\033[1m[Fehler]\033[m $*"; }
|
||||
|
||||
# ---------- Argumente ----------
|
||||
|
||||
while getopts ":i:" opt; do
|
||||
case $opt in
|
||||
i) SSH_KEY="$OPTARG" ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
done
|
||||
shift $(( OPTIND - 1 ))
|
||||
|
||||
[[ $# -eq 0 ]] && usage
|
||||
|
||||
if [[ ! -f "$SSH_KEY" ]]; then
|
||||
err "SSH-Key nicht gefunden: $SSH_KEY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ---------- Hauptschleife ----------
|
||||
|
||||
for server in "$@"; do
|
||||
echo ""
|
||||
echo "================================================================"
|
||||
echo " Server: $server"
|
||||
echo "================================================================"
|
||||
|
||||
# Verbindungstest
|
||||
if ! ssh "${SSH_OPTS[@]}" -i "$SSH_KEY" root@"$server" true 2>/dev/null; then
|
||||
err "Keine SSH-Verbindung zu $server möglich."
|
||||
continue
|
||||
fi
|
||||
|
||||
ssh "${SSH_OPTS[@]}" -i "$SSH_KEY" root@"$server" '
|
||||
changed_versions=""
|
||||
|
||||
for ini in /usr/local/php-*/etc/php.ini; do
|
||||
[[ -f "$ini" ]] || continue
|
||||
|
||||
# PHP-Version aus Pfad ermitteln (z.B. "8.4" aus php-8.4.18)
|
||||
dir="$(dirname "$(dirname "$ini")")"
|
||||
base="$(basename "$dir")" # z.B. php-8.4.18
|
||||
ver_full="${base#php-}" # z.B. 8.4.18
|
||||
ver_minor="$(echo "$ver_full" | cut -d. -f1-2)" # z.B. 8.4
|
||||
|
||||
# Prüfen ob die Zeile aktiv (nicht auskommentiert) vorhanden ist
|
||||
if grep -qP "^\s*extension=ldap\.so" "$ini"; then
|
||||
sed -i "s|^\(\s*\)extension=ldap\.so|\1;extension=ldap.so|" "$ini"
|
||||
echo " [fix] $ini → extension=ldap.so auskommentiert"
|
||||
changed_versions="$changed_versions $ver_minor"
|
||||
else
|
||||
echo " [skip] $ini (kein aktives extension=ldap.so gefunden)"
|
||||
fi
|
||||
done
|
||||
|
||||
# FPM-Dienste neu starten, falls Änderungen vorgenommen wurden
|
||||
for ver in $changed_versions; do
|
||||
svc="php-${ver}-fpm.service"
|
||||
if systemctl is-active --quiet "$svc"; then
|
||||
systemctl restart "$svc"
|
||||
if systemctl is-active --quiet "$svc"; then
|
||||
echo " [ok] $svc neu gestartet"
|
||||
else
|
||||
echo " [ERROR] $svc Neustart fehlgeschlagen!"
|
||||
systemctl status "$svc" --no-pager -l | tail -10
|
||||
fi
|
||||
else
|
||||
echo " [skip] $svc ist nicht aktiv, kein Neustart"
|
||||
fi
|
||||
done
|
||||
|
||||
[[ -z "$changed_versions" ]] && echo " Keine Änderungen notwendig."
|
||||
'
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "================================================================"
|
||||
echo " Fertig."
|
||||
echo "================================================================"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user