Hallo allerseits,
Mein Problem liegt in einem Aufruf von PHP als CGI. Meine Delphi-Applikation ruft die php-cgi.exe auf und übergibt ihr in einem String die ensprechenden Umgebungsvariablen, also Hostname, QueryString, usw.
Das Funktioniert alles ganz wunderbar. Nur streikt dann die
TCP/
IP Verbindung zu
MySQL. PHP kann nicht auf die Datenbank zugreifen. Rufe ich den PHP Interpreter als CLI auf, so funktioniert alles, wie es soll, und die Datenbankverbindung haut hin. Aber ich will die CGI, und nicht die CLI
Das ganze wird über GetConsoleOutput realisiert (denke mal, dass diese Funktion soweit klar ist, da es viele Beispiele dafür im Netz gibt).
Delphi-Quellcode:
//...
var
CallPHP, EnvStr:
string;
OutList, ErrList: TStringList;
//...
// CallPHP wird mit einem Wert belegt, der aus der Config-INI des Programms gelesen wird.
// QueryStr wird dynamisch erzeugt. Beim Testen wurde der soweit einwandfrei an PHP übergeben und ausgewertet.
//...
EnvStr :=
'
SERVER_SOFTWARE=' + ExtractFileName(ParamStr(0)) + #0 +
'
REDIRECT_STATUS=' + '
ALLOWED' + #0 +
'
PATH_TRANSLATED=' + filePath + #0 +
'
QUERY_STRING=' + QueryStr + #0 +
'
SERVER_NAME=' + JvComputerInfoEx1.Identification.LocalComputerName + #0 +
'
GATEWAY_INTERFACE=' + '
CGI/1.0' + #0 +
'
SERVER_PROTOCOL=' + '
1.1' + #0 +
'
SERVER_PORT=' + '
80' + #0 +
'
REQUEST_METHOD=' + Method + #0 +
'
SCRIPT_NAME=' + ExtractFileName(filePath) + #0 +
'
REMOTE_ADDR=' + JvComputerInfoEx1.Identification.IPAddress + #0 +
'
HTTP_ACCEPT=' + '
text/html' + #0;
//...
GetConsoleOutput(CallPHP, EnvStr, OutList, ErrList);
//...
Es funktioniert alles von Delphi aus reibungslos. Aber PHP bekommt keine Verbindung zur
MySQL.
Ich bekommen immer nur die Fehlermeldung
Can't create
TCP/
IP socket (10106)
Ich habe nun schon herumprobiert, die Werte in der php.ini bei der Sektion [
mysql] zu ändern, ohne Erfolg, Websuchen bringen mir den Fehler nur in Verbindung mit diversen kleinen Webserver-Projekten, doch wirklich einen Ansatz, was es sein könnte, hab ich noch nicht.
Fehlt da irgendetwas im EnvStr, was noch mitübergeben werden muss, wovon ich nun nichts weiß ?
Oder liegt der Fehler irgendwo in meinen PHP-Einstellungen ?
Schonmal vielen Dank im Voraus.