php-script werkt ineens niet meer
PHP-warning feof() expects parameter to be resource, boolean given in ....grafiek.inc.php line 24 en:
PHP-warning fgets() expects parameter to be resource, boolean given in ....grafiek.inc.php line 26.
Ik heb al gekeken of de data wel aanwezig is op de site en die is er. Ik heb ook al geprobeerd ofeen @ voor fopen het probleem oplost maar dat lukt niet. De php-versie die momenteel draait is 5.6.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 04/04/2018 10:05:19 door - Ariën -
Een @ is overigens NOOIT de 'magic' oplossing om een fout te verhelpen. Je verhelpt de fout daar niet mee, maar je verbergt de foutmelding enkel.
En de link naar buienradar ook :
https://gadgets.buienradar.nl/data/raintext?lat=51.5135872&lon=7.4652981
Als ik in de error zie dat er een boolean wordt gegeven i.p.v. een resource doet mij het een vermoeden geven dat er ergens wat foutafhandeling mist.
Ik heb de oplossing gegeven op basis van het php artikel.
Adoptive Solution op 04/04/2018 11:07:22:
Ik heb de oplossing gegeven op basis van het php artikel.
Han Brouwer Keij op 05/04/2018 14:05:28:
Adoptive Solution op 04/04/2018 11:07:22:
Ik heb de oplossing gegeven op basis van het php artikel.
Ik mis een reactie?
Ik heb de hele While-loop in de if statement geplaatst en dat zorgt er in ieder geval voor dat de grafiek weer wordt weergegeven maar zonder de data erin. De foutmeldingen blijven nog gewoon in de logfile komen.
Zijn fopen wrappers mogelijk uitgeschakeld? Welke warning komt uit fopen naar boven?
Ik heb geen idee hoe dat uitgeschakeld of ingeschakeld zou kunnen worden.
PHP-warning feof() expects parameter to be resource, boolean given in ....grafiek.inc.php line 24
Gewijzigd op 06/04/2018 11:53:32 door - Ariën -
in een tijdelijk script te zetten, en kijken of deze setting "On" of "Off" is
Die staat zowel voor local als master op off. Kan ik dat omzeilen?
Gewijzigd op 06/04/2018 11:53:14 door - Ariën -
Hoogstens via php.ini. Of je daar bij kan, is de vraag.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$url = "https://gadgets.buienradar.nl/data/raintext?lat=52.8836&lon=6.9023";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
?>
$url = "https://gadgets.buienradar.nl/data/raintext?lat=52.8836&lon=6.9023";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
?>
Gewijzigd op 05/04/2018 16:38:38 door Ivo P
Ik heb er het volgende van gemaakt maar ook op deze manier blijft neerslag.txt leeg als wordt er wel naar het bestand geschreven als je de pagina oproept.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
vWritePageToFile( 'https://gadgets.buienradar.nl/data/raintext?lat=52.8836&lon=6.9023', 'neerslag.txt' );
function vWritePageToFile( $sHTMLpage, $sTxtfile ) {
$sh = curl_init( $sHTMLpage );
$hFile = FOpen( $sTxtfile, 'w' );
curl_setopt( $sh, CURLOPT_FILE, $hFile );
curl_setopt( $sh, CURLOPT_HEADER, 0 );
curl_exec ( $sh );
curl_close( $sh );
FClose ( $hFile );
}
function vWritePageToFile( $sHTMLpage, $sTxtfile ) {
$sh = curl_init( $sHTMLpage );
$hFile = FOpen( $sTxtfile, 'w' );
curl_setopt( $sh, CURLOPT_FILE, $hFile );
curl_setopt( $sh, CURLOPT_HEADER, 0 );
curl_exec ( $sh );
curl_close( $sh );
FClose ( $hFile );
}
Edit:
Het is niet nodig om steeds het eerste voorgaande bericht integraal te quoten. Dit zorgt ervoor dat het topic minder leesbaarder wordt. Daarom heb ik wat onnodige quotes weggesnoeid. Gelieve hier graag rekening mee te houden.
Gewijzigd op 06/04/2018 11:54:49 door - Ariën -
Waar heb je CURLOPT_RETURNTRANSFER dan gelaten?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$curl = curl_init('https://gadgets.buienradar.nl/data/raintext?lat=52.8836&lon=6.9023');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
$myFile = "neerslag.txt";
$fh = fopen($myFile, 'w') or die("kan file niet openen");
fwrite($fh, $result);
fclose($fh);
?>
$curl = curl_init('https://gadgets.buienradar.nl/data/raintext?lat=52.8836&lon=6.9023');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
$myFile = "neerslag.txt";
$fh = fopen($myFile, 'w') or die("kan file niet openen");
fwrite($fh, $result);
fclose($fh);
?>
https://snippets.webaware.com.au/howto/stop-turning-off-curlopt_ssl_verifypeer-and-fix-your-php-config/
Voor Buienradar kan je een uitzondering maken, omdat het niet zo super spannende en cruciale data is. Maar als je het goed wilt doen, en je zou met belangrijke gegevens werken die over SSL gaan, dan zou ik CURLOPT_SSL_VERIFYPEER op false zeker afraden!
Ik meen dat je die CA's ook via curl kan aanroepen, dus je hoeft dan niet eens je php.ini aan te passen.
Gewijzigd op 07/04/2018 16:53:22 door - Ariën -
Ik vind het wel goed zo Ariën. Ik word binnenkort 72 en hoef niet meer zo scherp te zijn. Ik ben al blij dat ik het allemaal nog een klein beetje begrijp. :-)