Tämä koodi tulostaa seuraavan virheilmoituksen:
lainaus:
Parse error: parse error, unexpected T_VARIABLE in c:\........\new.php on line 4
<?php function ftp_copytolocal($conn_id,$remote_dir="/",$local_dir){ mkdir($local_dir); $sisallys=ftp_nlist($conn_id,$remote_dir); foreach ($sisallys as $file){ $res = ftp_size($conn_id, $remote_dir.$file); if (($file != '.') && ($file != '..')){ if($res =='-1'){ ftp_copytolocal($conn_id,$remote_dir.$entry,$local_dir.$file); } else { $ft = []; } } } if(count($ft)){ sort($ft); foreach ($ft as $files){ ftp_get($conn_id,$remote_dir."/".$file,$local_dir."/".$file, FTP_BINARY) or exit ("Tiedostojen kopioinnissa vaikeuksia"); } } } ?>
Ongelma on siinä, kun en löydä tuosta mitään arvaamatonta...
$ft = [];
tosta se tulee
Tämän koodin logiikka ei kyllä nyt ole järin toimiva. Ilmeisesti tarkoitus on tallettaa $ft-muuttujaan kaikki $file-arvot, ja sitten käydä nämä lävitse.
Korjauksia sokkona testaamatta:
<?php function ftp_copytolocal($conn_id,$remote_dir="/",$local_dir){ mkdir($local_dir); $ft = array(); $sisallys=ftp_nlist($conn_id,$remote_dir); foreach ($sisallys as $file){ $res = ftp_size($conn_id, $remote_dir.$file); if (($file != '.') && ($file != '..')){ if($res =='-1'){ ftp_copytolocal($conn_id,$remote_dir.$entry,$local_dir.$file); } else { $ft[] = $file; } } } if(count($ft)){ sort($ft); foreach ($ft as $file){ ftp_get($conn_id,$remote_dir."/".$file,$local_dir."/".$file, FTP_BINARY) or exit ("Tiedostojen kopioinnissa vaikeuksia"); } } } ?>
Kiitos. Tuossa oli kyllä selvä moka. Tuo ei kuitenkaan muuttanut virheilmoitusta mitenkään. Sama juttu. Sama rivi (4), vaikka tieto rivillä nyt vaihtui. Odottaako tämä ohjelma jotakin muuta tulevaksi tuon "mkdir($local_dir)" jälkeen?
ps. Ilmeisesti tuo file-array on tuossa turha, se pelkästään tekee sen, että tiedostot tallennetaan aakkosjärjestyksessä kotikoneelle.
Tiedoksi: huomasin tuossa pari muuttujaa, joiden korjaaminen ei vaikuttanut asiaan:
ftp_copytolocal($conn_id,$remote_dir.$entry,$local_dir.$file);
$entry = pitää olla $file
ftp_get($conn_id,$remote_dir."/".$file,$local_dir."/".$file,
$file = pitää olla $files
Oliko tämä liian visainen pulma?
Tässä vielä tämä korjailtu tiedosto. Moittii yllämainitulla tavalla riviä 4.
<?php function ftp_copytolocal($conn_id, $remote_dir, $local_dir){ mkdir($local_dir); $cont = ftp_nlist($conn_id,$remote_dir); foreach($cont as $file){ $res = ftp_size($conn_id, $remote_dir."/".$file); if (($file != '.') && ($file != '..')){ if($res =='-1'){ ftp_copytolocal($conn_id,$remote_dir."/".$file, $local_dir."/".$file); } else { ftp_get($conn_id,$remote_dir."/".$file,$local_dir."/".$file, FTP_BINARY); } } } } ?>
Ei tuo minulla ainakaan mitään herjaa.
JTS kirjoitti:
Ei tuo minulla ainakaan mitään herjaa.
Tässä on jokin kumma homma... minullakin unix-järjestelmässä ei moittinut mitään. Windowsissa kuitenkin moittii unexpected T_VARIABLE:a. Testasin sitä useammalla tiedostonimellä, mutta vika ei näytä olevan missään päivitysjutussakaan. Mitä windows tuossa herjaa?
Ps. tuo olisi hyvä saada toimimaan nimenomaan windowsissa, siis kotikoneelta käsin...
Siis koodina on pelkästään, ja vain ainoastaan tuo? Itse kyllä kokeilin tuota nimenomaan Windowsissa, komentorivillä. Paha sanoa, tuo virheilmoituskaan ei minusta kyllä viittaa siihen etteivät ftp-funktiot olisi saatavilla.
JTS kirjoitti:
Siis koodina on pelkästään, ja vain ainoastaan tuo? Itse kyllä kokeilin tuota nimenomaan Windowsissa, komentorivillä. Paha sanoa, tuo virheilmoituskaan ei minusta kyllä viittaa siihen etteivät ftp-funktiot olisi saatavilla.
Kyllä. Tällä hetkellä vain tämä. Funktion toimivuutta ajattelin testata vasta sitten kun saan tuon toimimaan...
Ettei vaan olis jääny vanha versio kummittelemaan? (uusi väärään kansioon) tai jotain?
Aihe on jo aika vanha, joten et voi enää vastata siihen.