[PHP] Fopen gedraagt zich anders op verschillende servers

Pagina: 1
Acties:

Onderwerpen


  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Al enige tijd draai ik een script, welke altijd gewerkt heeft, om via fopen te kijken of mijn webcam online is. Nu heb ik een aantal maanden geleden het script verplaatst naar een andere hostingprovider, en ik kom er nu (pas) achter dat het script sindsdien niet meer werkt.

Op de ene hostingprovider geeft fopen een TRUE ... op de andere geeft precies hetzelfde script een FALSE.
Ik dacht eerst dat het aan mezelf lag, en het script niet klopte, maar het blijkt dus wel gewoon nog te werken op de oude server.

Onderstaande script gebruik ik om te testen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function camtest($ipadress, $port) 
{ 
  if ($ret = @fsockopen($ipadress, $port, $errno, $errstr, 1)) 
  { 
    fclose($ret); 
    return true; 
  } 
  else 
  { 
    return false; 
  } 
} 


function camtest2($ipadress, $port) 
{ 
  if($bestand2 = fopen("http://$ipadress:$port", "r")) 
  { 
    return true; 
  } 
  else 
  { 
    return false; 
  } 
} 


if (camtest("wolf2003.demon.nl", "8080")) 
{ 
  print "Test1 : Online!<br>"; 
} 
else 
{ 
  print "Test1 : Offline<br>"; 
} 

if (camtest2("wolf2003.demon.nl", "8080")) 
{ 
  print "Test2 : Online!<br>"; 
} 
else 
{ 
  print "Test2 : Offline<br>"; 
}


Ik het ook met mijn IP adres geprobeerd, maar dat maakt niets uit.

Script draait op http://www.renewolf.nl/webcam2.php en op http://www.sweblog.nl/rene/webcam2.php.

Zoals je daar kan zien geeft ie op server 1: 2xOffline en op server 2: 2xOnline.

Iek snap er nix meer van ... Iemand?

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Staat de nieuwe hostingpartij het openen van URL's wel toe? Is een setting in PHP, die vaak omwille van veiligheid wordt uitgezet (info). Als oplossing kan je met met iets als CURL gaan werken.

[ Voor 48% gewijzigd door sjroorda op 10-09-2005 17:05 ]


  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Zodra ik http://www.tweakers.net invul geven beide servers 'Online' aan. Dus, neem aan dat het dan ondersteund wordt.

Edit: Heb het nog ff voor de zekerheid ook opgezocht in phpinfo() en het staat inderdaad op beide servers gewoon op ON. Waar kan het probleem anders nog zitten???

[ Voor 44% gewijzigd door Wolf3D op 10-09-2005 17:14 ]


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Wat voor foutmelding geeft de fsockopen (zie php.net voor documentatie)?

  • b19a
  • Registratie: September 2002
  • Niet online
Haal op lijn 3 die @ eens weg en geef de foutmelding :) (zoals sjroorda al zegt)

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Ik echo nu in de source van het testbestandje $errno en $errstr .. en krijg op nieuwe server terug:

111
Connection refused

Wat betekend dit? (niet letterlijk natuurlijk .. :P)

Edit: @-teken had ik ook weggehaald. Niet slim om die neer te zetten bij het debuggen ..hehe.. DOH!

[ Voor 23% gewijzigd door Wolf3D op 10-09-2005 17:22 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wolf3D schreef op zaterdag 10 september 2005 @ 17:21:
Ik echo nu in de source van het testbestandje $errno en $errstr .. en krijg op nieuwe server terug:

111
Connection refused

Wat betekend dit? (niet letterlijk natuurlijk .. :P)
Dat de site die je probeert te bereiken niet toegankelijk is. Wat dit veroorzaakt is een tweede vraag, en wel een tweede vraag die veel verschillende antwoorden kan hebben. ;)
Edit: @-teken had ik ook weggehaald. Niet slim om die neer te zetten bij het debuggen ..hehe.. DOH!
Sowieso is een @ vies en kun je die beter vermijden. Fouten moet je uit je code halen of afvangen, niet blokkeren.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Ik ben wel heeeel benieuwd naar één van de verschillende antwoorden die mogelijk zijn! :D

Deels mee eens wat betreft het @-teken, wat betreft het zorgen voor een foutloze code! Ik plaats hem ook meestal op het moment dat ik weet dat alles goed werkt en alles uitgebreid getest is en ik eigenlijk klaar ben met het script. Je weet nooit wat er in de toekomst nog gebeurd met het script en op die manier vang je iig vieze foutmeldingen af die de bezoeker niet hoeft of mag zien...

  • ShadowLord
  • Registratie: Juli 2000
  • Laatst online: 18-09 22:12
-NMe- schreef op zaterdag 10 september 2005 @ 17:26:
Sowieso is een @ vies en kun je die beter vermijden. Fouten moet je uit je code halen of afvangen, niet blokkeren.
Soms kun je niet anders. Sommige functies geven wel een foutcode terug die je kan afvangen, maar de error verschijnt nog steeds. Dit kan in sommige gevallen hoogst irritant zijn.

You see things; and you say, "Why?" But I dream things that never were; and I say, "Why not?"


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Dit komt denk ik doordat de cam op een ander poortnummer dan 80 draait. fopen gebruiken om een url te openen staat dus op beide servers wel aan (www.tweakers.net werkt immers wel), maar waarschijnlijk zit op de andere server de uitgaande firewall dicht voor poorten anders dan 80. Aangezien jij verbindt op poort 8080 krijg je dus een connection refused.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ShadowLord schreef op zaterdag 10 september 2005 @ 17:39:
[...]


Soms kun je niet anders. Sommige functies geven wel een foutcode terug die je kan afvangen, maar de error verschijnt nog steeds. Dit kan in sommige gevallen hoogst irritant zijn.
Ooit gehoord van error handling en error_reporting :? ;)

Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Janoz schreef op zaterdag 10 september 2005 @ 21:29:
Dit komt denk ik doordat de cam op een ander poortnummer dan 80 draait. fopen gebruiken om een url te openen staat dus op beide servers wel aan (www.tweakers.net werkt immers wel), maar waarschijnlijk zit op de andere server de uitgaande firewall dicht voor poorten anders dan 80. Aangezien jij verbindt op poort 8080 krijg je dus een connection refused.
Hmmm, dat klinkt logisch .. maar .. dit geldt voor fopen .. en niet voor fsockopen toch?

Ik heb trouwens bij fsockopen nog http:// erbij gezet ... en dat doet wonderen .. tenminste .. ik krijg nu andere meldingen te zien.
http://wolf2003.demon.nl ipv alleen wolf2003.demon.nl :

server 1:
0
Success

server 2:
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/sweblog/public_html/rene/webcam2.php on line 7

Warning: fsockopen(): unable to connect to http://wolf2003.demon.nl:8080 in /home/sweblog/public_html/rene/webcam2.php on line 7
13
Permission denied

Helluuuuup!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

.. maar .. dit geldt voor fopen .. en niet voor fsockopen toch?
Ik zou niet weten waarom dat verschil zou moeten maken. De server laat enkel uitgaande verbindingen op poort 80 toe. Of je dit nu via fopen, fsockopen of welke thirdparty achtig iets ook doet. Wat zou immers het nu van een beveiliging zijn wanneer je dit zo simpel kan omzeilen?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Hmm, zit wat in! :)
Maar, als deze poort op hun server dicht zit, betekend het dus ook dat zowiezo niemand gebruik kan maken van mijn webcam-gebeuren.... toch? Alles gaat via poort 8080. En moet ik dan op zoek gaan naar poorten die WEL open staan, anders dan 80 .. want die is alleen voor het webgebeuren bedoeld toch? ... ben niet zo thuis in het 'poort-gebeuren' :?

Of zijn er andere work-arrounds? .. of andere ideeën? Ik neem aan dat ik niet de enige ben die zijn webcam op website wil zetten, of dat ik de enige hostingprovider heb die alle poorten dicht heeft zitten? ... hoop ik ....

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Wolf3D schreef op zondag 11 september 2005 @ 13:29:
Hmm, zit wat in! :)
Maar, als deze poort op hun server dicht zit, betekend het dus ook dat zowiezo niemand gebruik kan maken van mijn webcam-gebeuren.... toch? Alles gaat via poort 8080. En moet ik dan op zoek gaan naar poorten die WEL open staan, anders dan 80 .. want die is alleen voor het webgebeuren bedoeld toch? ... ben niet zo thuis in het 'poort-gebeuren' :?

Of zijn er andere work-arrounds? .. of andere ideeën? Ik neem aan dat ik niet de enige ben die zijn webcam op website wil zetten, of dat ik de enige hostingprovider heb die alle poorten dicht heeft zitten? ... hoop ik ....
Je zou je hosting provider kunnen vragen of er een firewall is die die poort blokkeerd en of die eventueel open mag :)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Wolf3D schreef op zondag 11 september 2005 @ 13:29:
Hmm, zit wat in! :)
Maar, als deze poort op hun server dicht zit, betekend het dus ook dat zowiezo niemand gebruik kan maken van mijn webcam-gebeuren.... toch?
Nee, dat betekend dat die webserver geen verbinding kan maken met jouw webcamserver. Het zegt helemaal niks over willekeurige computers die verbinding met jou webcamserver willen maken.
Alles gaat via poort 8080. En moet ik dan op zoek gaan naar poorten die WEL open staan, anders dan 80 .. want die is alleen voor het webgebeuren bedoeld toch? ... ben niet zo thuis in het 'poort-gebeuren' :?
afaik valt je webcamserver ook gewoon onder 'het web gebeuren'. Ga maar eens met je browser naar het adres. Er zal een pagina of een plaatje verschijnen. De enige reden waarom webcam servers vaak default op een andere poort dan 80 draaien is omdat ze anders in conflict kunnen raken met eeen eventueel al draaiende webserver.

Poorten zijn eigenlijk heel simpel. Om te verbinden met een andere computer heb je een ipnummer nodig (anders is immers neit bekend met welke computer je wilt verbinden). Op die computer kunnen meerdere programma's draaien waarmee je zou kunnen verbinden. Denk hierbij bijvoorbeeld aan een webserver, een ftpserver, een mailserver, enz enz. Om nu ook een onderscheid te kunnen maken met welke server je wilt verbinden geef je een poortnummer mee. Elk van de server programma's gaat 'achter een poort' zitten en krijgen elk de verbindingen door die op die poort binnen komen. Om de boel wat overzichtelijk te houden hebben ze enkele standaard poorten afgesproken (80 voor www, 21 voor ftp enz enz), maar niks weerhoud je ervan om een ander poortnummer te gebruiken (de 8080 voor een webserver bijv).
Of zijn er andere work-arrounds? .. of andere ideeën? Ik neem aan dat ik niet de enige ben die zijn webcam op website wil zetten, of dat ik de enige hostingprovider heb die alle poorten dicht heeft zitten? ... hoop ik ....
Firewall open laten zetten, je webcamserver op een andere poort laten draaien, enz.. Het makkelijkste is, wanneer je thuis geen webserver hebt draaien, om gewoon de webcamserver op poort 80 te zetten,

[ Voor 3% gewijzigd door Janoz op 11-09-2005 13:46 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Sendy
  • Registratie: September 2001
  • Niet online
Wolf3D schreef op zondag 11 september 2005 @ 01:10:
[...]


Hmmm, dat klinkt logisch .. maar .. dit geldt voor fopen .. en niet voor fsockopen toch?

Ik heb trouwens bij fsockopen nog http:// erbij gezet ... en dat doet wonderen .. tenminste .. ik krijg nu andere meldingen te zien.
http://wolf2003.demon.nl ipv alleen wolf2003.demon.nl :

server 1:
0
Success

server 2:
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/sweblog/public_html/rene/webcam2.php on line 7

Warning: fsockopen(): unable to connect to http://wolf2003.demon.nl:8080 in /home/sweblog/public_html/rene/webcam2.php on line 7
13
Permission denied

Helluuuuup!
Als fsockopen een IP adres of hostnaam verwacht, dan moet je daar geen URL invoeren.

Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Volgens mij vreet fsockopen beide .. IP en hostnaam, maar had ze zowiezo al allebei geprobeerd...

Wat betreft het poort-verhaal... Duidelijk verhaal! Dank voor je uitleg!
Ik heb geprobeerd poort in te stellen op 80 .. maar dan krijg ik de melding dat deze poort al in gebruik is. Andere poorten hebben hetzelfde probleem als 8080 .. en werken ook niet.

Dus denk dat ik, zoals Erkens ook al zei, maar een mailtje ga sturen naar hostingprovider morgen.

In ieder geval bedankt voor jullie hulp en uitleg!

Acties:
  • 0 Henk 'm!

  • Equator
  • Registratie: April 2001
  • Laatst online: 09-09 15:29

Equator

Crew Council

#whisky #barista

Wolf3D schreef op maandag 12 september 2005 @ 00:45:

Ik heb geprobeerd poort in te stellen op 80 .. maar dan krijg ik de melding dat deze poort al in gebruik is.
Dan draai je waarschijnlijk een webserver (Apache, of IIS) op die poort.

Beide kan je instellen op een andere poort, zodat je poort 80 vrij hebt voor je webcam gebeuren..

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

CyberJ schreef op maandag 12 september 2005 @ 10:10:
Dan draai je waarschijnlijk een webserver (Apache, of IIS) op die poort.

Beide kan je instellen op een andere poort, zodat je poort 80 vrij hebt voor je webcam gebeuren..
of je gebruik mod_proxy (ProxyPass) als je Apache hebt om bijvoorbeeld een vhost door te sturen naar die webcam :)

Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Gek, vandaag kon ik poort 80 opeens wel instellen ... maar, heb met hostingprovider gemailt, en die hebben netjes de poort voor mijn IP-adres opengezet! Het zou binnen 24 uur werken, en .. het werkt!!

NIJS! Dank voor al uwen hulp!

Groeten, René
Pagina: 1