File_get_contents($url) false

#1

Pokušavam dohvatiti jedan udaljeni fajl koji baca ovaj rezulta:
[[“ARTIKL:varchar”,“RADJED:varchar”,“ZALIHA:decimal”,“MAL_CIJENA:decimal”],[“39321200”,“21”,0.0000,451.990000],[“39321200”,“22”,0.0000,505.990000],[“39321200”,“25”,0.0000,514.990000],[“39321200”,“27”,0.0000,471.990000]]
to je raw data.

Dakle dohvaća ga i jednostavno ne može ga parsati.
Error log kaže:

PHP Warning: file_get_contents(http://…): failed to open stream: Connection refused in /home/…

Provjerio sam allow URL open na serveru gdje je skripta koja čita. Dozvoljeno.
što bi još trebao tražiti?

Probao sam i PHP i curl metodama i ne dohvaća ništa, stalno false.

Var dump isto ništa.

0 Likes

#2

Daj blok koda kako to radiš.

0 Likes

#3

Probaj s ovom funkcijom, meni radi like a charm:

function get_content_by_url($URL){  
	
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_URL, $URL);
      $data = curl_exec($ch);
      curl_close($ch);

      //ako skripta ne postoji, onda appache server vraca:
      /*
      <HTML>
      <HEAD>
      <TITLE>404 Not Found</TITLE>...
      */
      //izlaz za slučaj da skripta ne postoji
      if(preg_match("/^<HTML>\n<HEAD>\n<TITLE>404 Not Found<.TITLE>/", $data)) return false;

      return $data;
}

…nisam jedino siguran koliko ova provjera da li file postoji je dobra…vjerovatno pokriva samo ograničeni spektar situacija. Ako znaš po što ideš…taj dio ti je vjerovatno i nepotreban.

0 Likes

#4

Nije dobra, zapravo jako je losa.

Zasto bi usporedjivao cijeli body responsea, a ne samo status code?

0 Likes

#5

Ne prolazi ti request do tog urla. Pogledaj da li si ispravno unio protokol http ili https ?

0 Likes

#6

Ma znam i sam da je loš taj dio…zato i napominjem. U konkretnom slučaju sam to ubacio onako s nogu da rješim situaciju…nisam išao za tim kako se to može bolje. Jer znam da će funkcija lako evoluirat kad zatreba :slight_smile:

Ako se može usporedit status code…to je to. Sibni slobodno primjer :wink:

0 Likes

#7

Nemoj se slučajno prevariti pa pogledati dokumentaciju.

0 Likes

#8

Hvala ekipa, do servera je:
“otvorili smo port 6680 u firewallu”

to su napravili.

Može lock jer ovo nije bilo vezano sa programiranjem ipak.

Selim na drugo pitnaje no otvorim novu temu.

0 Likes