Autor Beitrag
mats
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Mi 23.01.19 13:40 
Hallo,

mein Programm nimmt Daten aus einer Maske und schickt sie als String via HTTP an ein PHP-Script auf dem Server. Dieses stellt die Verbindung zur Datenbank her (MariaDB) und die Datenbankklasse schickt die einzelnen Daten (alles Strings) an den DB-Server und der trägt die Daten in die Tabellen ein.
Dazu habe ich TIdHTTP benutzt. Zuerst nur Local (Win7, Apache, MariaDB und PHP). Funktioniert wirklich sehr zuverlässig.
Jetzt habe ich ich die PHP-Scripte und die Datenbank auf den InternetServer kopiert/portiert und ich erhalte beim Zugriff HTTP/1.1 500 internal server error. Wie gesagt: Local alles bestens schreiben und lesen der DB -> keine Probleme.

result := Server.Post('https://myDomain.de/ws/WebServiceBasic.php', ParamList);

Meine einzige Idee: es könnte am httpS liegen. Muß ich da vielleicht ein paar SSL Bibliotheken laden? Leider weiß ich da wenig bescheidt und nicht wie. Oder die Serverkonfiguration? Keinen blassen Schimmer ???

Kann Hilfe dringend brauchen.

Danke schon mal...

mats
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10120
Erhaltene Danke: 1226

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 23.01.19 16:04 
Moin!

Indy braucht für SSL tatsächlich zusätzliche Bibliotheken, such mal nach Indy+SSL, da sollte es schon ausreichend Material geben. :idea: :les: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 23.01.19 16:06 
- Nachträglich durch die Entwickler-Ecke gelöscht -
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Mi 23.01.19 16:57 
Hallo Frühlingsrolle,

hat leider nicht funktioniert. Die Fehlermeldungen (Fehler1.png, Fehler2.png im Anhang) sind gleich geblieben. Wobei Fehler2.png der Ausschnitt ist, wo der Fehler auftritt. Ich seh da leider nicht durch, aber vielleicht kannst Du/Ihr daraus den Fehler ableiten?


mats
Einloggen, um Attachments anzusehen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 23.01.19 17:44 
- Nachträglich durch die Entwickler-Ecke gelöscht -
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18734
Erhaltene Danke: 1631

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 23.01.19 18:29 
Bei SSL Problemen sollte auch eine entsprechende Fehlermeldung kommen, das wird es nicht sein, nein. Was passiert denn, wenn du die URL im Browser aufrufst? Hast du im Skript eine Fehlerbehandlung drin für den Fall von fehlenden Parametern, Problemen mit der DB-Verbindung usw.?

Du kannst z.B. an den Anfang des Skripts eine Ausgabe setzen und den Rest des Skripts überspringen und dich dann schrittweise herantasten ab wann der interne Serverfehler kommt.

Die SSL Einrichtung wie von user profile iconFrühlingsrolle beschrieben brauchst du aber natürlich so oder so.
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Mi 23.01.19 19:52 
Hallo,

ich denke auch das es am Server liegt.

Ich habe da ein Problem mit dem Zertifikat (1&1) gefunden. Ich habe folgende Schlüssel:
_.DOMAIN.de_private_key.key
-.DOMAIN.de_ssl_certificate_INTERMEDIATE.cer
DOMAIN.de_ssl_certificate.cer

Aber mir fehlen zwei Schlüssel:
Zertifikat (*.crt)
*CA-Zertifikat (*-ca.crt)

Ich hab nicht gefunden wie ich da ran komme. Vielleicht liegt es ja daran?

mats
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10120
Erhaltene Danke: 1226

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 23.01.19 20:15 
Moin!

Nur aus den Dateinamen geraten: das erste ist der private Schlüssel für das letzte, die Mitte ist die Intermediate-CA, also: alles da. :nixweiss:

Nicht auf die Dateinamen-Extension reinfallen, da kann sonstwas stehen. Überlicherweise (für SSL) sollten die Zertifikate/Schlüssel im PEM-Format (binary-base64) vorliegen.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Mi 23.01.19 22:39 
Hallo Leute,

ich weiß nicht ob alles da ist. Aber der Server nimmt die Zertifikatsdateien mit .cer nicht, der will .crt -> Server: Plesk Onyx v17.5.3_build1705170317.16 os_CentOS 6, CentOS 6.8 (Final).

noch Vorschläge?


mats
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10120
Erhaltene Danke: 1226

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 23.01.19 23:17 
Moin!

Was an der Datei für ein Schildchen klebt, ist Wurst, solange der Inhalt passt: serverfault.com/ques...l-generated-key-file :les: :think:

Probier´s doch erstmal ohne SSL, dann ist zumindest der Thread hier pausiert, denn Indy wird sicherlich keinen Einfluss auf deine Server-Config haben. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Do 24.01.19 13:51 
Hallo zusammen,

habe das Zertifikat auf dem Server erneuert, alles Ok, aber immer noch 500. Doch eines gibt mir zu denken. Ich hatte auf dem Server das Verzeichnis mit den PHP-Dateien neu erstellt und vergessen die Dateien neu hochzuladen. Da kam ein 404 -> Ressource wurde nicht gefunden. Konnte das Programm ja auch nicht, Dateien vergessen. Also liest, oder versucht, das Programm die angeforderte Datei, sonst hätte es ja keinen 404 gegeben. Und als die PHP-Dateien auf dem Server waren wieder 500.
Versteh' ich nicht.

mats
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Do 24.01.19 14:29 
Schau dir mal dir .htaccess Datei an.

Der Fehler 500 steht für Bad Gateway. Bedeutet der Server kann die PHP Datei zwar lesen, aber nicht an den PHP Interpreter weiterleiten.

Kannst du die Datei denn aus dem Browser aufrufen und ausführen?

PS: Ich kann dir auch einen Account zum Testen auf meinem Server geben. Darauf läuft NGINX und PHP 5.6 bis 7.2. MySQL ist auch vorhanden.
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Do 24.01.19 17:03 
Hallo Tankard,

mein OS ist CentOS 6.8. Ich kann die .htaccess nicht finden. Wo?
Eine kurze PHP-Datei mit print'Hallo'; im gleichen Verzeichnis wird im Browser ausgegeben.

mats
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Do 24.01.19 17:58 
Hi,

hast du das Server selbst installiert? Da wir es schwierig dir zu helfen. Fehlerursachen gibt es viele. Die .htaccess muss nicht existieren. Ich nehme an deine PHP Version nicht mit dem Apache richtig konfiguriert ist. Meistens sind es die Zugriffsrechte auf den PHP Socket die nicht stimmen. Leider ist es, ohne die ganzen Konfigurationsdateien zu sehen, reine Raterei.

Kannst du denn über den Webbrowser auf PHP Skripte zugreifen?

Erstelle einfach mal im Verzeichnis eine Datei t.php mit folgendem Inhalt:

ausblenden Quelltext
1:
2:
3:
<?php
phpinfo();
?>


Dann rufe die Datei mit deinem Webbrowser auf, falls immer noch der Fehler 500 kommt. Liegt es daran, dass der Apache/NGINX Server sich nicht mit deiner PHP Installation unterhalten kann.


EDIT: habe dein print 'Hallo'; überlesen.

Poste doch mal den Code mit dem du auf den Server zugreifen möchtest. Inclusive Create etc. und nicht nur die Post Anweisung.
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Do 24.01.19 18:39 
Hallo,

ich hab das mit der phpinfo() versucht und bekomme ein 403 auf Port 443. Meine Hallo Datei wird angezeigt.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  Server: TIdHTTP;
  SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  ParamList: TStringList;
begin
  Server := TIdHTTP.Create();
  Server.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(Server);

  Server.Request.Charset     := 'utf-8';
  Server.Request.ContentType := 'text/html';

...
result := Server.Post('https://DOMAIN.de/ws/WebServiceBasic.php?' + dbString, ParamList);

...


mats
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Fr 25.01.19 10:02 
Hallo,

so, nur noch eine Sache und ich schließe den Thread. Kann es sein daß das Problem in den erweiterten Sicherheitsrichtlineien von PLESK liegt (die man nicht abschalten kann)? Denn wie ich gelesen habe greifen die auch bei der Datenbank. Vielleicht geben die den Fehler 500 zurück?

Danke für die Ideen...

mats
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10120
Erhaltene Danke: 1226

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 25.01.19 10:28 
Moin!

user profile iconmats hat folgendes geschrieben Zum zitierten Posting springen:
ich hab das mit der phpinfo() versucht und bekomme ein 403 auf Port 443. Meine Hallo Datei wird angezeigt.
user profile iconmats hat folgendes geschrieben Zum zitierten Posting springen:
Denn wie ich gelesen habe greifen die auch bei der Datenbank. Vielleicht geben die den Fehler 500 zurück?
Also zunächstmal ist ein HTTP/500 ein "internal server error", kein "bad gateway". Kuckst du hier.

Das ist eigentlich ein Zeichen dafür, dass die PHP-Einrichtung auf der Maschine nicht sauber / korrekt durchgeführt wurde. Wenn die Maschine plain-html verarbeiten kann (das "Hallo"), aber bei einem PHP-Script mit 500 antwortet, dann kann der PHP-Interpreter nicht gestartet werden. :idea:

Wie du das auf deinem Server wieder reparierst? Keine Ahnung, meine Glaskugel ist in der Reinigung... :nixweiss:

Ich bin mir aber nahezu sicher, dass das nix mit der Client-Seite zu tun hat (also die Delphi-Anwendung). ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Fr 25.01.19 12:06 
Hallo Narses,

ich denke mittlerweile auch das es mit dem PHP-Interpreter bzw. mit open_basedir zu tun hat.


mats