php auf Kommandozeile

Status
Für weitere Antworten geschlossen.

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Hallo,
ich habe einige php-scripte (Status-Mail verschicken ....), welche ich gerne per Kommandozeile anfahren möchte.
Normalerweise geht das ja mit php meineDatei.php
Allerdings kommt da "-ash: php: not found2
Ich finde php auch nicht per find . -name php*
PHP läuft aber, denn auf der Webebene kann ich die php Dateien aufrufen, Cronjobs und editor laufen perfekt.
Woran kann das liegen, daß php nicht auf Kommandoebene funktioniert?
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Den Befehl kennen die Synology Stations nicht. Entweder Du machst die Aufrufe über wget oder Du installierst dir php über IPKG nach...

Trolli
 

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
- bei wget geht die sichere Verbindung nicht (https)
- php hab ich gestern noch installiert, da gibt's Probleme mit den Script
Rich (BBCode):
<?php
$to="info@kupfer-prerow.de";
$nameto="Rafael Kupfer";
$from="info@kupfer-prerow.de";
$namefrom="Server - Kupfer";
$subject="Die lokale Datensicherung auf Server wurde abgeschlossen";
$message="\n\r\n\rDie lokale Datensicherung auf Server wurde erfolgreich abgeschlossen.";

mail($to,$subject,$message);
?>
sh: /usr/sbin/sendmail: not found

So langsam geht mir die Puste aus. Bin seit Tagen damit beschäftigt eine automatisch generierte Mail hinzubekommen.
Bei allen installierten Programmen gab's andere Fehler
- sendmail (greift nicht auf die Maileinstellungen der DS zu, ist auch recht kompliziert)
- putmail (bei der Installation =>sh: /usr/sbin/sendmail: not found)
(python25 hab ich installiert)
- nail
/opt/bin/false: No such file or directory
"/root/dead.letter" 9/225
. . . message not sent.

bei Vorhandensein vom Verzeichnis /opt/bin/false kommt
Server> /opt/bin/false: Permission denied

Was kann ich denn machen um auf die Originaleinstellungen der DS zuzugreifen und Mails zu verschicken?
Im Browser geht mein Script doch auszuführen, da bekomme ich dann als Mail das was ich haben möchte (aber wie gesagt über eine sichere Verbindung)
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Hallo,
danke für deine Hilfe.
Leider geht das bei mir nur übers Webinterface, wie schon oben beschrieben. Beim Aufruf über die Kommandozeile
php meinScript.php kommt die Fehlermeldung sh: /usr/sbin/sendmail: not found
Auf welche Datei greift denn mail() zu?
In welcher Datei sind die Pfade gespeichert, vielleicht brauche ich nur den Pfad zu Sendmail ändern (oder wohin geht mail() in der DS überhaupt)?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Die grundlegende PHP Konfiguration befindet sich in php.ini Diese müsste beim ipkg-PHP irgendwo unter /opt/etc liegen
 

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Eintrag:
sendmail_path = /usr/sbin/sendmail -t -i
Ist klar, /usr/sbin/sendmail gibt es ja nicht auf der DS.

In der /usr/syno/etc/php.ini gibt es den Eintrag für Sendmail nicht,
somit weiß ich auch nicht, was ich als Pfad in der /opt/etc/php.ini eintragen soll. :confused:
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Code:
$ find / -name sendmail
ergibt bei mir, dass ich sendmail haben sollte
/opt/sbin/sendmail
/volume1/opt/sbin/sendmail
also würde ich diesen Pfad in die php.ini eintragen. Ich habe das wohl mal via ipkg installiert
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Dein mail() greift möglicherweise auch auf eine zusätzliche IPKG-Installation statt auf die original Synology-Version zu. Vielleicht sind die Probleme dadurch zu erklären.

Trolli
 

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
@jahlives
/opt/sbin/sendmail
/volume1/opt/sbin/sendmail

Warum gibt/gab es überhaupt die Kopie des Ordners opt auf Volume1?

Ja, ich hatte zuvor Sendmail installiert, aber mit remove wieder entfernt, da die Konfiguration mich abschreckte.
Somit gibt es sendmail nicht mehr.
Auch kann ich den Pfad in der opt/etc/php.ini deaktivieren, er fragt trotzdem nach /usr/sbin/sendmail weil es der Standardpfad ist.

@Trolli
Du hast schon recht, vielleicht liegt es an der früheren Sendmail installation.
Nur muß sich das doch irgendwie berichtigen lassen.
Wie gefragt, auf welche Datei greift denn das PHP mail() im Original der DS zu? Welche Systemdatei kann das sein? Bei mir gibt es nur Verzeichnisse mail in /etc/
 

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Danke Trolli, werd ich mich mal mit englisch beschäftigen.
Programmenglisch geht ja so einigermaßen :)

Mich würde ja nur mal interessieren, ob das bei "nichtmodifizierten" Systemen geht auf der Kommandozeile. Ich denke mal, das liegt nicht an der vorigen Installation von Sendmail, sondern an der "ipkg PHP", welche ein Vorhandensein von sendmail (oder ähnlich z.B. putmail) vorraussetzt.

Und dann noch: Irgendwie muß man doch auch das interne mail() auf der Kommandoebene nutzen können.
Die Zeit, die ich nicht habe läuft mir bei solchen Dingen einfach weg!

Gruß
Rafael
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Ich wüsste nicht, wie man mail() direkt auf der Kommandozeile einsetzen kann. Aber wenn ich eine entsprechende php-Datei mit wget http://DNS/mailtest.php > /dev/null aufrufe, wird die Mail problemlos rausgeschickt. Ich hab das jetzt nochmal verifiziert.

Trolli
 

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Bei mir sieht das so aus:
Rich (BBCode):
Server> wget http://server/testmail.php > /dev/null
--2008-10-29 15:15:08--  http://server/testmail.php
Resolving server... 192.168.170.40
Connecting to server|192.168.170.40|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2008-10-29 15:15:08 ERROR 404: Not Found.
Mein Script liegt in /usr/syno/synoman/testmail.php
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Entweder legst Du Dein Skript mal ins Verzeichnis /volume1/web oder Du rufst es über http://server:5000/testmail.php bzw. https://server:5001/testmail.php auf.

Trolli
 

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Es funkt! Hurra! :)
mit http://server:5000/testmail.php klappt es
bei https://server:5001/testmail.php kommt die Authorisierungsfehlermeldung
Rich (BBCode):
Connecting to server|192.168.170.40|:5001... connected.
ERROR: cannot verify server's certificate, issued by `/C=TW/ST=Taiwan/L=Taipei/O=Synology Inc./OU=Certificate Authority/CN=Synolog
y Inc. CA/emailAddress=product@synology.com':
  Unable to locally verify the issuer's authority.
ERROR: certificate common name `synology.com' doesn't match requested host name `server'.
To connect to server insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
Muß ich da noch was grundsätzliches an meiner https Verbindung ändern?
- Zertificat importieren?
Hab beide Haken
HTTPS-Verbindung aktivieren
Die Internetverwaltung automatisch zu einem sicheren Kanal umleiten.

Na dann werde ich das mal heute Abend einbauen und testen

Vielen Dank erst einmal :):)
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Das ist die gleiche Zertifikatwarnung, die Du auch beim Zugriff mit dem Webbrowser bekommst. Kann man ja offensichtlich mit der Option "--no-check-certificate" übergehen. Aber da Du das ja nur lokal einsetzt, ist http eh die sinnvollere Variante.

Trolli

PS: Den Haken bei "Verwaltung auf einen sicheren Kanal umleiten" würde ich rausnehmen. Es reicht, wenn Du den Port 5000 im Router einfach nicht an die DS weiterleitest. Dann kannst Du intern immer noch über http und den Port 5000 arbeiten, was doch deutlich schneller ist...
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Einen Teil der Zertifikatsfehler kannst du mit einem eigenen Zertifikat, das genau auf den Servernamen ausgestellt ist umgehen.
Das wäre dieser Teil
ERROR: certificate common name `synology.com' doesn't match requested host name `
Den zweiten Fehler kriegst du nur dann weg, wenn das Zertifikat von einer vertrauenswürdigen Stelle ausgestellt wurde. Das kostet dann aber eine schöne Stange Geld. Das wäre dann dieser Fehler
ERROR: cannot verify server's certificate, issued by `/C=TW/ST=Taiwan/L=Taipei/O=Synology Inc./OU=Certificate Authority/CN=Synolog
y Inc. CA/emailAddress=product@synology.com':
Schau mal hier im Forum, da gibt es eine 3rd Party Application von itari, die es wesentlich erleichtert ein eigenes Zertifikat zu erstellen. Ansonsten geht das auch manuell über die Konsole (siehe http://www.synology-wiki.de/index.php/Generierung_eines_eigenen_SSL-Zertifikats)

Gruss

tobi
 

kupferrafi

Benutzer
Mitglied seit
17. Mrz 2007
Beiträge
88
Punkte für Reaktionen
0
Punkte
6
Danke für die Zertifikatinfos.
In dieser Richtung muss ich unbedingt Infos nachholen.
Habe jetzt erst bemerkt, dass ich für Angriffslustige den Editor frei auf der Weboberfläche liegen hatte (Itari hat ja immer gewarnt)
Allerdings ist bei mir auch nur ein "unbekannter" Port im Router auf 5001 der DS weitergeleitet. Und 3 Tage nicht ganz so sicher geht wohl auch noch.
Gelernt hab ich:
-alle Dateien unter /usr/syno/synoman/ sollte man mit aller Vorsicht erstellen!

Mal sehen ob mein automatisches Backup heute mit Emailversendung klappt, dann schaue ich noch mal nach meinem Leidensgenossen (PHP auf Kommandoebene) im englischen Forum, vielleicht hilft mein neues Wissen da etwas weiter :)

Gruß + Dank für die Infos
Rafael
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Man sollte die Ports 5000 und 5001 nicht beim Router durchlassen. Also am besten ist es, wenn man keine (!) Systemadministration per Web-Interface außerhalb des lokalen Netzes macht (halt immer alles von außen per Telnet machen).

Natürlich gibt es auch eine Reihe von Beiträgen hier, die sich mit der Absicherung beschäftigt haben. Zum einen gibt es die Möglichkeit à la 3rd-party-Guide von Synology, die Abfrage nach einem angemeldeten Benutzer durchzuführen, zum anderen kann man auch heftig mit mit mod_alias und mod_rewrite alles zumachen (IP-Adressen absichern) ... es gibt eine Menge Posts, die sich damit beschäftigen.

Für ganz Sicherheitsbewußte gibt es auch die Möglichkeit auf der DS mit reverse Proxies zu arbeiten (ipkg pound oder ipkg nginx oder ipkg perlbal). Da kann man so ziemlich alles, absichern, was von sich aus kein https hat und natürlich auch jeden Menge Ports verbiegen.

itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat