Minulla on eräässä kouluprojektissa pienoinen ongelma PHP:n file -funktion kanssa. Seuraavassa koodipätkässä haetaan txt -tiedosto tmp -kansioon ja käytetään siihen file -funktiota.
Kaikki toimii hyvin, kunhan tiedosto haetaan projektin pääkansiosta. Ongelmia ilmenee, kun tiedosto haetaan mistä tahansa muusta paikasta.
Miten file -funktion saisi viittaamaan oikeaan kansioon/tiedostoon? Olen yrittänyt kaikenlaista, mutta tuloksetta. Olen yrittänyt viitata siihen myös suoraan "http://localhost:8080/....", mutta sama ongelma pysyy. Ratkaisu on varmasti yksinkertainen, mutta tämä tyhmä pääni ei sitä ymmärrä.
Edit.
File -funktio antaa arvon "false", vaikka haluttu txt -tiedosto on siirtynyt tmp -kansioon ja sen sisältö on ihan oikein.
<?php if(!empty($_POST['upload'])) { $target_path = "./tmp"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "Tiedosto ". basename( $_FILES['uploadedfile']['name']). " on lisätty <br>"; } else{ echo "Tapahtui virhe, yritä uudelleen!"; } $size = filesize($_FILES['uploadedfile']['name']); // Luetaan tiedosto taulukkoon // tämä on se ongelma $tiedosto = file("./tmp" . basename( $_FILES['uploadedfile']['name'])) ; ?>
Mod edit. kooditagit
Virheilmoituksia?
Olisi nimittäin hyödyksi meille tietää, mitä ongelmat ovat ja tuleeko virheilmoituksia - jos tulee niin mitä. :)
GoldenDragon kirjoitti:
Olisi nimittäin hyödyksi meille tietää, mitä ongelmat ovat ja tuleeko virheilmoituksia - jos tulee niin mitä. :)
Virheilmoituksia tulee yksi eli file -funktio antaa arvon "false". Eli se ei sitä tiedostoa löydä.
Auttaisko, jos tuohon $target_path = "./tmp";
laittaisi kenon perään ja antaisit file()-funktiolle tuon $target_path-muuttujan parametriksi?
ajv kirjoitti:
Auttaisko, jos tuohon
$target_path = "./tmp";
laittaisi kenon perään ja antaisit file()-funktiolle tuon $target_path-muuttujan parametriksi?
Mielenkiintoista. Kun tein nuo mainitsemasi muutokset, niin nyt se toimii "melkein" oikein.
Muutokset:
$target_path = "./tmp/"; $tiedosto = file($target_path );
Tällä hetkellä file -funktio etsii tiedostoa /projekti -kansiosta, eikä /projekti/tmp -kansiosta. Eli jos tiedosto tai sen kopio sattuu olemaan projekti -kansiossa, niin homma toimii. Muuten ei. Pienestä se on kuitenkin kiinni.
Toimisko
<?php $target_path = "./tmp/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); //tähän väliin kaikki tuo muu mitä tuossa teet... $tiedosto = file($target_path); ?>
?
.=
tsuriga kirjoitti:
.=
Saivartelua... :)
nakki = nakki + nakinjatke
on niin BASICkiä :S.
Aihe on jo aika vanha, joten et voi enää vastata siihen.