Invalid argument supplied for foreach(), op 1 server
ben bezig om voor iemand, wat data uit een api(json) te verwerken op ze website.
heb op me eigen server getest of het werkt en hier werkt alles.
heb even een simpel klein voorbeeld gemaakt.
http://cheap-mail.eu/statitics-overall.php
gebruik de volgende code hier voor.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$json = file_get_contents("http://50.3.74.183:8081/api/analytics/");
$someArray = json_decode($json, true);
echo 'total users online(client): '.count($someArray) . '</br>';
foreach ($someArray as $key => $value) {
echo $value["username"] . ", " . $value["rank"] . "<br>";
}
?>
$json = file_get_contents("http://50.3.74.183:8081/api/analytics/");
$someArray = json_decode($json, true);
echo 'total users online(client): '.count($someArray) . '</br>';
foreach ($someArray as $key => $value) {
echo $value["username"] . ", " . $value["rank"] . "<br>";
}
?>
Het probleem is wanneer, ik alles nu naar de webhosting van de eind gebruiker upload. krijg ik overal de foutmelding
Warning: Invalid argument supplied for foreach().
wat ik niet snap is dat het op elke webhosting werkt behalve op de webhosting van de gebruiker(godaddy)
Lijkt mij of file_gets_contents geblokkeerd word. aangezien die in het voorbeeld script ook 0 terug geeft bij totaal users online. heb het script op 3 verschillende webhosting geprobeerd, overal werkt het.
godaddy zegt overigens dat er niks geblokkeerd word. en dat het probleem in het script zit.
iemand een idee, wat er fout gaat?
Alvast bedankt voor het meedenken.
Zet ook foutmeldingen eens aan:
Snel vermoeden: waarschijnlijk staat allow_url_fopen uit.
Ben van Velzen op 30/09/2016 22:40:26:
echo $json dan eens om te zien wat je wel krijgt?
Zet ook foutmeldingen eens aan:
Snel vermoeden: waarschijnlijk staat allow_url_fopen uit.
Zet ook foutmeldingen eens aan:
Snel vermoeden: waarschijnlijk staat allow_url_fopen uit.
hey bedankt voor je reactie.
echo json geeft een witte pagina.
krijg deze error in me log
[30-Sep-2016 20:49:43 UTC] PHP Warning: file_get_contents(http://50.3.74.183:8081/api/analytics/): failed to open stream: Connection refused in /home/prometheon/public_html/jappa/statistics-overall.php on line 6
allow_url_fopen staat op on had ik al gekeken, maar zie nu wel dat allow_url_include op off staat zou dat het kunnen wezen?
Nee dat sowieso niet, die wil je nooit aan hebben. Dus de API weigert de verbinding. Zit er misschien een landrestrictie op?
Ben van Velzen op 30/09/2016 23:16:53:
> allow_url_fopen staat op on had ik al gekeken, maar zie nu wel dat allow_url_include op off staat zou dat het kunnen wezen?
Nee dat sowieso niet, die wil je nooit aan hebben. Dus de API weigert de verbinding. Zit er misschien een landrestrictie op?
Nee dat sowieso niet, die wil je nooit aan hebben. Dus de API weigert de verbinding. Zit er misschien een landrestrictie op?
op de API zit geen landrestrictie of iets anders wat de refuse zou kunnen veroorzaken. snap ook niet dat het echt op elke server tot nu toe werkt. behalve bij godaddy.
En je weet zeker dat verbindingen naar buiten op andere poorten dan 80 en 443 niet worden geweigerd door Godaddy? Wat gebeurt er als je bijvoorbeeld file_get_contents('http://www.google.nl'); doet? Kan er zo snel niets over vinden.
Ben van Velzen op 30/09/2016 23:49:31:
En je weet zeker dat verbindingen naar buiten op andere poorten dan 80 en 443 niet worden geweigerd door Godaddy? Wat gebeurt er als je bijvoorbeeld file_get_contents('http://www.google.nl'); doet? Kan er zo snel niets over vinden.
Ziet in inderdaad wel uit als een poort probleem, google.nl laad die namelijk wel gewoon
Toevoeging op 30/09/2016 23:58:49:
Denk dat ik er uit ben, ga morgen even op de server, zorgen dat de api via een andere poort gaat.
stom dat ik hier niet eerder aangedacht heb.
Bedankt voor je hulp, mocht dit toch niet het probleem zijn laat ik het weten :)
Je blokkeert uitgaande poorten. Dit had ik ook eens op mijn server. In de CSF-firewall heb ik die poort geopend. Ik weet niet welke firewall hebt en of je erbij kan.