Page 1 of 1

fsockopen problem

Posted: 2009-03-10 05:40
by stream4fun
Hallo leutz

ich habe hier ein kleines PRoblemchen...

Ich möchte gern eine abfrage nutzen, die überprüft, ist der Port besetzt, Ja oder Nein. bei beiden kommt dann eine ausgabe Online oder Offline... auf server1 (suselinux 10.3) funktioniert das anstandslos. Wenn port belegt, zeigt er online an, bei frei dann halt offline...
auf meinem 2. server (debian ETCH) funktioniert es nicht vollständig. wenn port besetzt funzt es, wenn der port aber frei ist kommt folgende fehlermeldung....... ich bin ratlos
Warning: fsockopen() [function.fsockopen]: unable to connect to IP_adresse:Port(Connection refused) in /var/www/space/***/id/***/conf.php on line 5
** IP und Port entfernt hab und mit wörter ausgetauscht hab

vlt habt ihr da bissel ahnung von? und ich hoffe das ich im Richtigem unterforum gelandet bin wenn nicht schubst einfach ;)

Re: fsockopen problem

Posted: 2009-03-10 08:08
by daemotron
Thema nach Scripting / PHP verschoben

Kannst Du bitte mal das Skript (oder falls es umfangreicher ist, nur den relevanten Teil) posten, mit dem Du versuchst, den Socket zu öffnen? Glaskugel-Diagnosen sind im Allgemeinen wenig hilfreich...

P. S. wie läuft denn PHP (unter welchem User, mit welcher Technik) auf der Etch-Kiste? Hasts Du vielleicht versucht einen Port <= 1024 ohne root-Rechte zu öffnen?

Re: fsockopen problem

Posted: 2009-03-10 18:50
by stream4fun
ja sicherlich, ist ja eig nen welt bekannter code ...
<?php
$sock = fsockopen('ipadresse', port, &$errno, &$errstr, 5);
if(!is_resource($sock)) {
echo "<font color="#FF0000">offline</font>";
} else {
echo "<font color="#00BF00">online</font>"; }
?>
wie gesagt damit will ich ausgeben, online oder OFfline nur aber es folgt bei offline nur eine fehlermeldung

Habe ja 2 server, 1x suselinux und 1 x debian etch

und auf suselinux funzt das aber debian nein :(

Re: fsockopen problem

Posted: 2009-03-11 07:52
by danton
Wahrscheinlich ist unter SuSE das Error-Reporting im PHP anders eingestellt, so daß Warnings nicht angezeigt werden. Bei Debuggen ganz hilfreich, aber in der produktiven Umgebung nicht immer erwünscht.
Entweder du stellst den Error-Level mit error_reporting zu Beginn deines Scripts runter, oder du schreibst ein @ vor den problematischen Befehl:

Code: Select all

$sock = @fsockopen('ipadresse', port, &$errno, &$errstr, 5);