[php] fopen() / file() werkt niet op webserver

Pagina: 1
Acties:

Onderwerpen


  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
Ik heb een probleempje waar ik na lang zoeken niet uit kom. Ik vermoedt dat het iets met Plesk te maken heeft, dus ik twijfel of dit de juiste plaats is om te melden.

De volgende code werkt prima op mijn eigen testservertje thuis (beide tests), maar weigert te werken op mijn gehuurde VPS van Flexservers. Ik krijg ook geen enkele foutmelding. allow_url_fopen staat aan in de php config.

Ik kom er niet meer uit...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
error_reporting(E_ALL);

echo "Test 1";
$fd = fopen ("ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/EHGG.TXT", "r");
while (!feof ($fd)) 
{
   $buffer = fgets($fd, 4096);
   $lines[] = $buffer;
}
fclose ($fd);

echo "<pre>";
print_r($lines);
echo "</pre>";

echo "Test 2";
$metar_ = file("ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/EHGG.TXT");
echo "<pre>";
print_r($metar_);
echo "</pre>";
?>

  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:58

momania

iPhone 30! Bam!

Zou het niet zo zijn dat ftp verkeer gewoon geblokkeerd wordt?

Neem je whisky mee, is het te weinig... *zucht*


  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
Dat is idd voor de handliggend, maar zou ik dan niet een nette foutmelding moeten krijgen van PHP ?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Controleer of display_errors niet uit staat en doe meer aan foutafhandeling, door bijvoorbeeld te testen of fopen() false terug geeft.

{signature}


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 21-09 20:24
Ik heb hem eventjes getest en krijg wel een klap aan foutmeldingen:
Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in test.php on line 5

Warning: fopen(ftp://tgftp.nws.noaa.gov/...s/metar/stations/EHGG.TXT) [function.fopen]: failed to open stream: no suitable wrapper could be found in /home/c2905gxn/domains/regeling.com/public_html/zooi/test.php on line 5

Warning: fgets(): supplied argument is not a valid stream resource in /home/c2905gxn/domains/regeling.com/public_html/zooi/test.php on line 8

Warning: feof(): supplied argument is not a valid stream resource in /home/c2905gxn/domains/regeling.com/public_html/zooi/test.php on line 6
Verder crashte firefox nogal op deze output :D (oeps).

Edit: Die laatste 2 meldingen (fgets en feof) houden niet meer op ivm die while-lus.
Edit2: Heb je nou echt die while lus nodig voor 2 regeltjes tekst?
Edit3: test.php (zonder die while)

[ Voor 12% gewijzigd door jan-marten op 28-02-2008 09:51 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
jan-marten schreef op donderdag 28 februari 2008 @ 09:44:
Edit: Die laatste 2 meldingen (fgets en feof) houden niet meer op ivm die while-lus.
Edit2: Heb je nou echt die while lus nodig voor 2 regeltjes tekst?
Op een dergelijke manier lezen is common practice, maar je moet dan zoals ik reeds zei wel eerst checken op fouten bij fopen(). Deze code is gewoon niet defensief (aka gammel :> ) geschreven. Je moet niet zomaar aannemen dat $fd altijd een valide stream is.

[ Voor 6% gewijzigd door Voutloos op 28-02-2008 09:52 ]

{signature}


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

klaaz schreef op donderdag 28 februari 2008 @ 09:40:
Dat is idd voor de handliggend, maar zou ik dan niet een nette foutmelding moeten krijgen van PHP ?
Dat ligt eraan wat ze met verkeer op die poort doen. Te vaak is de zaak zo geconfigureerd dat je pas na een tijd wachten een timeout krijgt; heb je genoeg geduld gehad? ;)

Wie trösten wir uns, die Mörder aller Mörder?


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 21-09 20:24
Je zou eens kunnen kijken naar Snoopy-class. Mits je hoster socket-connections toestaat uiteraard.

  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
@jan-marten: bedankt voor de moeite zover ;)

@beide:
De code is ook niet rock solid bedoeld maar terug gebracht tot een stukje testcode om de boel niet ingewikkelder te maken. Tot de essentie dus.

Het vage is dat exact hetzelfde scriptje WEL werkt op mijn eigen LAMP servertje thuis.

Tweede vage punt is dat mijn Plesk omgeving normaal PHP error's rapporteert, maar dat schijnbaar niet doet bij dit script... :( Als ik de display_error aan zet weer wel.. ?)

error:
code:
1
2
3
4
5
Warning: fopen(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /home/httpd/vhosts/cirrusflyers.com/httpdocs/test3.php on line 8

Warning: fopen(ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/EHGG.TXT): failed to open stream: Resource temporarily unavailable in /home/httpd/vhosts/cirrusflyers.com/httpdocs/test3.php on line 8

Warning: feof(): supplied argument is not a valid stream resource in /home/httpd/vhosts/cirrusflyers.com/httpdocs/test3.php on line 9

De laatste wordt als gevolg van de while lus herhaalt en is natuurlijk het gevolg van een eerdere error. Dat herhalen zorgt vervolgens voor jan-martens FF crash ;)

Het lijkt er idd op dat deze actie wordt tegengehouden ondanks dat allow_url_fopen aan staat. Lijkt dus iets met FTP te maken te hebben zoals momania al aangaf.

Ik kan hier echter niks over vinden in de Plesk documentatie.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:58

momania

iPhone 30! Bam!

klaaz schreef op donderdag 28 februari 2008 @ 09:59:
Het lijkt er idd op dat deze actie wordt tegengehouden ondanks dat allow_url_fopen aan staat. Lijkt dus iets met FTP te maken te hebben zoals momania al aangaf.
Temporary failure in name resolution in...

Dit kan volgens mij ook betekenen dat er geen DNS is geconfigureerd voor die server en je dus een ip-adres moet gebruiken voor verbindingen naar buiten :)

Neem je whisky mee, is het te weinig... *zucht*


  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
Interessante opmerking... Domeinen heb ik elders geconfigureerd, dus niet in de betreffende Plesk omgeving. What to do?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:58

momania

iPhone 30! Bam!

Uhm, doe een nslookup of ping naar tgftp.nws.noaa.gov op je eigen machine, en vervang dat in je code met het ip-adres dat je dan ziet....

Neem je whisky mee, is het te weinig... *zucht*


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
klaaz schreef op donderdag 28 februari 2008 @ 09:59:
De code is ook niet rock solid bedoeld maar terug gebracht tot een stukje testcode om de boel niet ingewikkelder te maken. Tot de essentie dus.
Check of $fd !== false is de essentie. Moge alle scripts die de return value van functies welke een bepaalde waarde bij failure teruggeven niet controleren compleet van de aardbodem verdwijnen.
Als ik de display_error aan zet weer wel.. ?)
Dan is de config van hoster zo 'aardig' om fouten default weg te moffelen. Tijdens ontwikkelen wil je iig elke error zien, maar met propere checks kan je dit geval dus ook zonder errors detecteren.

[ Voor 9% gewijzigd door Voutloos op 28-02-2008 10:14 ]

{signature}


  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
momania schreef op donderdag 28 februari 2008 @ 10:11:
[...]

Uhm, doe een nslookup of ping naar tgftp.nws.noaa.gov op je eigen machine, en vervang dat in je code met het ip-adres dat je dan ziet....
Gutver.... Het werkt... THANKS&Jippie! (WHY?????)

Waarom werkt de oorspronkelijke wel op mijn testservertje thuis en niet op de Plesk server????

@voutloos: bedankt voor de programmeerlessen ;) (Je doet je naam wel eer aan ;) )

[ Voor 3% gewijzigd door klaaz op 28-02-2008 10:21 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:58

momania

iPhone 30! Bam!

klaaz schreef op donderdag 28 februari 2008 @ 10:19:
[...]
Waarom werkt de oorspronkelijke wel op mijn testservertje thuis en niet op de Plesk server????
Op jouw server heb je in je netwerk configuraties netjes een DNS server geconfigureerd staan en op je Plesk server dus niet.

Die DNS heb je nodig om een url te kunnen resolven naar een ip-adres. Simpel :Y) ;)

Neem je whisky mee, is het te weinig... *zucht*


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 21-09 20:24
Erg bijzonder dat een server geen DNS lookups kan doen :/

  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
Duidelijk. Dit duidt echter op een verkeerde DNS config op de server dus. De situatie is als volgt: Ik heb de domeinen geregistreerd bij een partij die dit keurig doet (dootall.com) en een webtool heeft voor de configuratie. De VPS omgeving heb ik bij een ander (Flexservers). Op die manier kan ik makkelijk weg bij de Plesk host als ik niet tevreden ben zonder dat ik alle domeinen moet verhuizen (is me al eens overkomen).

De config ziet er als volgt uit:

code:
1
2
3
4
cirrusflyers.com, A, 000.000.000.000
cirrusflyers.com, MX, mail.cirrusflyers.com
mail, A, 000.000.000.000
www, A, 000.000.000.000


Waarbij 000.000.000.000 het ip adres is van de Plesk server.

Ontbreekt hier iets aan?
Ik kan bij Dootall ook doorverwijzen naar externe DNS servers. Is het handiger om te verwijzen naar de Plesk DNS server? In dit geval (ns.cirrusflyers.com)? Ik ben niet zo'n Goeroe op dit gebied, de huidige config werkt al jaaaaaren prima, mijn klanten hebben ver het algemeen geen toegang tot Plesk, die gebruik ik alleen voor de hosting.

[ Voor 7% gewijzigd door klaaz op 28-02-2008 10:40 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:58

momania

iPhone 30! Bam!

Dat zijn je inkomende DNS registraties.
Jouw domein namen die dus gekoppeld worden aan ip-adres van jouw server en dit aan de rest van de DNS servers op de wereld verteld ;)

Het gaat nu om uitgaand verkeer dat een DNS nodig heeft die er niet is dus.

Neem je whisky mee, is het te weinig... *zucht*


  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
Ok , ik zal eens uitpluizen waar ik dat kan doen. Tip om te beginnen?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Bij de helpdesk, want jij hoeft als klant niet voor de DNS config te zorgen?

{signature}


  • klaaz
  • Registratie: April 2000
  • Laatst online: 18-09 22:37

klaaz

it's me!

Topicstarter
Logisch! Thanks for the help & the info all!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in test.php on line 5
php save mode = 1??

  • BlackWhizz
  • Registratie: September 2004
  • Laatst online: 08-12-2024
Dan staat er wel iets van safe mode restriction.
Pagina: 1