Invalid argument supplied for foreach(), op 1 server

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaap evidor

Jaap evidor

30/09/2016 22:36:07
Quote Anchor link
Hey allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
  }

  ?>


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.
 
PHP hulp

PHP hulp

19/04/2024 02:21:35
 
Ben van Velzen

Ben van Velzen

30/09/2016 22:40:26
Quote Anchor link
echo $json dan eens om te zien wat je wel krijgt?
Zet ook foutmeldingen eens aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_error', 'stdout');
error_reporting(E_ALL);
?>


Snel vermoeden: waarschijnlijk staat allow_url_fopen uit.
 
Jaap evidor

Jaap evidor

30/09/2016 22:57:11
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_error', 'stdout');
error_reporting(E_ALL);
?>


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?
 
Ben van Velzen

Ben van Velzen

30/09/2016 23:16:53
Quote Anchor link
> 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?
 
Jaap evidor

Jaap evidor

30/09/2016 23:32:09
Quote Anchor link
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?


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.
 
Ben van Velzen

Ben van Velzen

30/09/2016 23:49:31
Quote Anchor link
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.
 
Jaap evidor

Jaap evidor

30/09/2016 23:52:38
Quote Anchor link
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 :)
 
- Ariën  -
Beheerder

- Ariën -

01/10/2016 10:29:45
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.