Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Nettisivuni ei toimi PHP-skriptistä ladattuna

Sivun loppuun

p99o [04.07.2014 00:31:41]

#

Minulla on tiedosto, joka generoi json-taulukon

...
header('Content-Type: application/json');
echo json_encode($result);

Yritän käyttää samaa tiedostoa niin että saisin tuon php-arrayksi. Eli näin:

$blaa = json_decode(file_get_contents(HTTP_PATH."/getJutut.php?params=foobar"),true); // vähän vaihdettu vain nimiä :P

Testasin että tiedosto kyllä palauttaa datan, mutta ei tuossa php:koodissani.
Eikö tämän pitisi toimia? Olen tässä jo koittanut kaikenlaista

(psst... hyvää yötä)

HTML5 [04.07.2014 00:50:50]

#

Funktio file_get_contents palauttaa tiedoston sisällön sellaisenaan, suorittamatta sen sisältämää koodia.

Siis: Ensimmäisen tiedoston sisältö palautuu toisen tiedoston json_decode-funktiolle sellaisenaan, mikä aiheuttaa virheen, sillä json_decode-funktio ei saa tässä haluamaansa JSON-koodia, vaan parsimatonta PHP:tä.

-tossu- [04.07.2014 06:32:43]

#

HTML5: file_get_contents toimii tässä tapauksessa juuri oikein. Sen avulla tehdään HTTP-pyyntö, jonka tulos kuuluukin antaa json-decode-funktiole sellaisenaan.

p99o: Yrität hakea JSON-datan ilmeisesti toiselta palvelimelta. Mitä file_get_contents-funktio palauttaa? Palvelimella ei ei välttämättä esimerkiksi ole allow_url_fopen asetettu. Jos tiedosto on samalla palvelimella, laita toiminnallisuus funktioon ja käytä includea.

p99o [04.07.2014 13:03:08]

#

Tiedosto ei ole toisella palvelimella, vaan omana tiedostonaan localhostilla.
HTTP_PATH on ympäristön polku muodossa "http://localhost/juttu/blaa/projekti/", koska näinhän se pitää olla tässä tapauksessa.

print_r() palauttaa:

Array
(
)

Lebe80 [04.07.2014 13:20:23]

#

No palauttaako php-tiedosto ihan validin json-datan?

p99o [04.07.2014 13:27:28]

#

Kyllä, kute jo sanoin. Lorem ipsumia tällä hetkellä tuutin täydeltä. Testasin tällä, ja kyllä vaatimukset täyttää.

Lebe80 [04.07.2014 14:23:11]

#

Paha sitten sanoa, kun ei itse pääse debuggaamaan.

Silti, vaikuttaisi, ettei tuo sun urlisi silti ole oikea, tai ettei se palauta sitä json-dataa.

Debuggaa uudelleen.

p99o [04.07.2014 14:47:07]

#

Onko nyt ihan varma että ongelma ei ole tiedostossa joka generoi json:in?

...
header('Content-Type: application/json');
echo json_encode($result);

Metabolix [04.07.2014 16:55:45]

#

Oletko siis varmistanut, että myös se paikallinen osoite http://localhost/plaa tuottaa kelvollista JSON-dataa? Useinhan palvelimilla (varsinkin webhotelleissa) on useita sivustoja, jolloin localhost ei ole toimiva domain vaan osoitteessa pitäisi lukea todellinen domain kuten www.ohjelmointiputka.net.

Väännetään nyt vielä varalta rautalangasta. Mitä tämä tulostaa:

var_dump(file_get_contents(HTTP_PATH."/getJutut.php?params=foobar"));

p99o [05.07.2014 00:09:29]

#

string(2) "[]"

http://gyazo.com/3c431a2fc67cc2e6c52b85c98a712b41

Metabolix [05.07.2014 11:28:36]

#

Sehän kertoo, että skriptisi getJutut.php tulostaa täysin kelvollista JSON-dataa, tarkemmin tyhjän JSON-taulukon. Debuggauksen seuraava vaihe on selvittää, miksi tulostuskoodin $result-muuttujassa on tyhjä taulukko ($result == array()). Vika on siis ensimmäisen koodisi kohdassa ”...” eli tietojen hakemisessa.

The Alchemist [05.07.2014 12:48:37]

#

Suosittelen muitakin kokeilemaan ns. forumistien mustaa listaa henkilöistä, joiden postauksiin ei pidä vastata. Kyllähän noin avuton debuggaaminen on jo loukkaus tätä palstaa kohtaan. Näistä vastauksistakin näkee, etteivät vastapostaajatkaan jaksa käyttää aivokapasiteettiaan (koska kysymysten laatu on heikko), joten tällaisiin ketjuihin vastaaminen ainoastaan antaa huonon kuvan ulkopuolisille.

p99o [05.07.2014 13:04:13]

#

En jaksa tapella tämän kanssa. Yritin kaikkea.

Macro [05.07.2014 17:31:28]

#

p99o kirjoitti:

En jaksa tapella tämän kanssa. Yritin kaikkea.

Postaisit sen koodin alkuosan, niin joku varmaan kertoisi mikä siinä on vialla.

Metabolix [05.07.2014 19:25:16]

#

Veikkaan, että tämä ongelma ratkeaisi joko katsomalla PHP:n varoituksia tai tarkistamalla, että osoite ja parametrit ovat oikeasti ihan samat kuin siinä muka toimivassa testauksessa.

p99o [05.07.2014 20:19:30]

#

Varoituksia ei tule, vaikka virheilmoitukset ovat päällä.
Jos syötän jotain dataa staattisesti niin kyllä se näkyy.

Metabolix [05.07.2014 20:26:22]

#

No mistä se lorem ipsum sitten tulee, ja miten se ei muka näy toiselle skriptille, vaikka näet sen jossain muualla itse?

Otapa nyt myös selvää, mistä tuo $result tulee ja miksi se on tyhjä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta