Kategorie: Synology DSM

Wie kann ich die Standard-PHP-Version auf meinem Synology NAS ändern?

– ggfs. SSH in der Systemsteuerung des NAS aktivieren
– via Putty oder Bitvise oder einen anderen SSH-Client auf dem NAS einloggen
– folgende Befehle abschicken

Auf einem Synology NAS unter DSM lassen sich per Webserver-Script keine Dateien anlegen

Wenn sich bspw. per PHP auf dem Webserver eines Synology NAS keine Dateien anlegen lassen, ist der Grund meist eine mangelnde Rechtezuweisung für die Gruppe „http“.

Meist gibt es dann hübsche Fehlermeldung Warning: fopen(...): failed to open stream: Permission denied in /volume1/web/xyz.php

Um das Problem zu beheben, sind nur wenige Schritte notwendig:

  1. im Backend des NAS die Systemsteuerung öffnen
  2. „Gemeinsamer Ordner“ anklicken
  3. in der Liste den betreffenden Ordner anklicken
  4. Button „Bearbeiten“ anklicken
  5. im sich öffnenden Fenster den Reiter „Berechtigungen“ anklicken
  6. in der Selectbox oben links „Lokale Gruppen“ auswählen
  7. für „http“ die Checkbox „Lesen/Schreiben“ markieren
  8. den Button „OK“ anklicken

Nunmehr sollte es keine Probleme mehr geben.

Mails per PHP von einer Synology Diskstation verschicken

mail() funktionert ja bekanntlich unter Synology DSM auf einer Diskstation nicht.

Relativ komfortabel kann man jedoch Mails mit dem PEAR-Mail-Paket via SMTP versenden.
Dazu sind folgende Schritte nötig:

  1. Über den Paketmanager PEAR installieren
  2. Per telnet oder ssh auf der Diskstation eine Konsole öffnen und abschicken
  3. Eine Mail per Mail verschicken:

Update für DSM6

Der PEAR-Pfad muss an zwei Stellen ergänzt werden:

1. Hauptmenü => WebStation => PHP-Einstellungen => Häkchen bei „PHP open_basedir benutzerspezifisch anpassen“ setzen und bei „open_basedir:“ am Ende :/volume1/@appstore/PEAR/ ergänzen

2. auf „Erweiterte Einstellungen“ klicken => Reiter „Kern“ anklicken => den Wert für „include_path“ auf „.:/volume1/@appstore/PEAR/“ anpassen und „OK“ klicken

Ggfls. muss der Webserver noch per SSH neu gestartet werden:
sudo synoservice --restart pkgctl-WebStation

Update für DSM7

Und eines Tages funktionierten die Includes von PEAR einfach nicht mehr. Kein Update, kein Nüscht. Sehr schräg!
Abhilfe:
Hauptmenü => WebStation => Skript-Spracheinstellungen => PHP => aktuell genutzte PHP-Version => Bearbeiten => Kern => include_path auf „.:/volume1/@appstore/PEAR/:/tmp:/var/services/tmp:/var/services/web:/var/services/homes:/var/packages/PEAR/target:/usr/local/share/pear“ setzen

Webserver neu starten:
sudo systemctl restart pkgctl-WebStation

Ein PHP-Skript unter Synology DSM per Cronjob regelmäßig ausführen lassen

In aller Kürze:

  1. Auf der Diskstation den SSH-Dienst aktivieren:
    Systemsteuerung => Terminal & SNMP => Häkchen bei „SSH-Dienst aktivieren“ setzen => „Übernehmen“ klicken
  2. Per Putty oder anderem SSH-Cilent mit der Diskstation verbinden:
    Host: diskstation (oder welchen Namen Ihr vergeben habt oder die IP-Adresse)
    User: root
    Password: Das Admin-Password
  3. Crontab bearbeiten:
    cd /etc[RETURN]
    vi crontab[RETURN]
    mit den Cursortasten an das Ende der untersten Zeile gehen
    [i] drücken, um in den Editiermodus zu gelangen
    Daten eintragen, bspw.
    0 6 * * * root curl http://127.0.0.1/ein_verzeichnis/eine_php_datei.php
    für das tägliche Aufrufen des Sripts morgens um 6 Uhr
    Die einzelnen Werte müssen mit Tabstopps getrennt werden!
    [ESC] drücken, um den Editiermodus zu verlassen
    [:][w][q] drücken, um die crontab zu speichern und den vi zu verlassen
  4. Cron neu starten:
    restart crond[RETURN]
    exit[RETURN]

Update ab DSM 6.0

Synology lässt nunmehr keinen Login auf das root-Konto zu. Stattdessen muss man sich als admin einloggen und dann vor das vi crontab[RETURN] noch ein sudo setzen. Komplett lautet der Aufruf dann
sudo vi crontab[RETURN]


Update ab DSM 7.0

Um crond neu zu starten:
sudo systemctl restart crond[RETURN]
und
sudo systemctl restart synoscheduler[RETURN]