Intern:Hauptseite/Bplaced/PHP-ini-Konfiguration

Aus ArtisanCommerce Dokumentation
Version vom 25. Februar 2026, 21:36 Uhr von Admin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= PHP-CGI Wrapper & PHP-ini-Konfiguration auf bplaced = == Übersicht == Dieses Skript dient als Wrapper für PHP-CGI auf Shared-Hosting-Systemen wie bplaced. Ziele: * Automatische PHP-Versionserkennung * Dynamische Pfad- und Modulkonfiguration * OpenBaseDir-Management * Integration von Composer-, Mailparse- und IMAP-Pfaden * Logging & Debugging == Aufbau des Wrappers == === 1. Debug-Flag & Argumente === <syntaxhighlight lang="bash"> DEBUG=0 for ARG…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

PHP-CGI Wrapper & PHP-ini-Konfiguration auf bplaced

Übersicht

Dieses Skript dient als Wrapper für PHP-CGI auf Shared-Hosting-Systemen wie bplaced. Ziele:

  • Automatische PHP-Versionserkennung
  • Dynamische Pfad- und Modulkonfiguration
  • OpenBaseDir-Management
  • Integration von Composer-, Mailparse- und IMAP-Pfaden
  • Logging & Debugging

Aufbau des Wrappers

1. Debug-Flag & Argumente

DEBUG=0
for ARG in "$@"; do
    if [ "$ARG" = "-vv" ]; then
        DEBUG=1
        break
    fi
done
  • Prüft, ob `-vv` übergeben wird, um Debug-Ausgaben zu aktivieren.
  • Fallstrick: Zu viele Debug-Ausgaben können CGI-Output zerstören.

2. System-Pfad Fix

ORIGINAL_PATH="$PATH"
export PATH="/usr/share/7.4/ext/bin:/usr/share/8.2/ext/bin:/usr/share/8.3/ext/bin:$ORIGINAL_PATH"
  • Priorisiert bplaced-spezifische PHP-Binaries.
  • Fallstrick: Fehlende Binaries verhindern Script-Ausführung.

3. Wrapper-Signal

[[ "$DEBUG" -eq 1 ]] && echo "PHPWRAPPER_CALL"
  • Signalisiert den Start des Wrappers bei Debug-Modus.

4. Output-Kontrolle

exec 3>&1 4>&2
  • Speichert stdout & stderr für spätere Wiederherstellung.
  • Fallstrick: Falsches Zurücksetzen unterdrückt Ausgabe.

5. Fehlerbehandlung

handle_error() {
    [[ "$DEBUG" -eq 1 ]] && echo "Error on line $1"
}
trap 'handle_error $LINENO' ERR
  • Fängt Script-Fehler ab.
  • Fallstrick: Subshell-Fehler werden nicht immer erfasst.

6. Laufzeit- & Kontextdaten

datetime=$(date +"%Y-%m-%d %H:%M:%S")
calling_process_info=$(ps -p $$ | tail -n 1)
current_directory=$(pwd)
script_name="$0"
  • Nützliche Metadaten für Logging.

7. User- & Host-Kontext

USERNAME='peterpatoschka'
HOST='server6.bplaced.net'
source /users/_core/${USERNAME}/env
  • Lädt Benutzer-Umgebungsvariablen.
  • Fallstrick: `env` muss lesbar sein.

8. PHP-Versionserkennung

  • Erkennung via `.php-version` oder Verzeichnisregel für Support-Projekte.
  • Fallstrick: Leerzeichen in `.php-version` oder fehlende Datei verhindern korrekte Erkennung.

9. PHP Basis-Konfiguration

export PHP_INI_SCAN_DIR="/users/${USERNAME}/etc/php/${PV}"
export PHPRC="${PHP_INI_SCAN_DIR}/php.ini"
  • Bestimmt benutzerdefinierte PHP-INIs.
  • Fallstrick: Falsche Pfade verhindern Modul-Laden.

10. Pfaddefinitionen

  • BASE_PATH, TEMP_PATH, Composer-Pfade, Vendor-Pfade.
  • Fallstrick: Schreibrechte prüfen.

11. OpenBaseDir

OB="/users/${USERNAME}/:/users/_temp/${USERNAME}:/etc/ssl/certs/:/etc/ca-certificates/"
OB="${OB}:${COMPOSER_CONFIG_PATH}:${COMPOSER_CACHE_PATH}:${COMPOSER_SHARE_PATH}"
OB="${OB}:${DIRTYFIX_PATH}"
  • Limitiert Dateizugriffe auf sichere Pfade.
  • Fallstrick: Fehlerhafte OB-Pfade blockieren Zugriff auf Temp, Composer, SSL.

12. Projekt- / Release-Erkennung

  • Fügt Vendor-Pfade dynamisch zu OB hinzu.
  • Fallstrick: Einzelne Dateien als OB-Pfad können fehlschlagen.

13. PHP-Module

  • IonCube, Mailparse, IMAP werden nur geladen, wenn vorhanden.
  • Fallstrick: Fehlende `.so` Dateien verhindern PHP-Start.

14. PHP-CGI Kommando

CGI=(
    /usr/share/${PV}${PR}/bin/php
    -c /users/${USERNAME}/etc/php/${PV}${PR}/php.ini
    $IC $MP $IMAP
    -d curl.cainfo=/etc/ssl/certs/ca-certificates.crt
    -d memory_limit=${MM:=256}M
    -d open_basedir="${OB}"
    -d upload_tmp_dir="${TEMP_PATH}/"
    -d session.save_path="${TEMP_PATH}/"
)
  • Fallstricke: curl-Zertifikate, Memory-Limit, Schreibrechte beachten.

15. Logging

  • Aufruf wird in zentralem Logfile protokolliert.
  • Fallstrick: Logfile muss beschreibbar sein.

16. Cleanup & Ausführung

  • Temporäre Variablen löschen und PHP-CGI ausführen.

Zusammenfassung Fallstränge

  • OpenBaseDir → Zugriff auf Temp, Composer, SSL
  • PHP-Module → IonCube, Mailparse, IMAP
  • SSL → curl.cainfo
  • Schreibrechte → Temp-Ordner, Logfile
  • PHP-Version → Module/Pfade unterschiedlich
  • Debug/Logging → CGI-Output zerstörbar