Autor Zpráva
Nich
Profil
Řeším velkou záhadu proč mi to jde a zároveň nejde...
Pokud uploaduji soubor jen do složky stroje (bez vytvoření cílové), tak vše funguje.... ale pokud si vytvořím složku a chci uploadovat do ní, tak se tam soubor nedostane.
tady je kód:

//Proměnná $id['id'] je vždy nějaké číslo (podle 'id' záznamu v databázi), ale to na to vliv snad nemá :-)


                    //Pripojeni k FTP
                     $ftp_server = "ftp.server.cz";
                     $ftp_user = "nick";
                     $ftp_pass = "****";

                    // set up a connection or die
                     $conn_id = ftp_connect($ftp_server, 21) or die("Couldn't connect to $ftp_server"); 

                    // try to login
                     if(ftp_login($conn_id, $ftp_user, $ftp_pass)) {
                     
                       //vytvoříme si složku
                        mkdir("../stroje/".$id['id']."/", 0777);
                        chmod("../stroje/".$id['id']."/", 0777);    
                         
                           $tmp_name = $_FILES['foto_1']['tmp_name'];
                           $name = $_FILES["foto_1"]["name"]; 
                           $path = "../stroje/" . $id['id'] . "/" . $name;
                           $transfer_mode = FTP_BINARY;
                         
                         

                               if (move_uploaded_file($tmp_name, $path)) {                
                                      if (ftp_put($conn_id, $name, $path, $transfer_mode)) { 
                                           echo "UPLOADNUTO";
                                           
                                      }
                                      else { 
                                          echo "NEUPLOADNUTO 2";
                                     }
                               } else {
                                     echo "NEUPLOADNUTO 1"; 
                                }

                        }
                     
                     else { die("Nepřipojeno k FTP"); }

  
        // close the connection
      ftp_close($conn_id);  
      


nejvíc nechápu z toho, že když dám:

var_dump(is_writable("../stroje/" . $id['id'] . "/"));  


tak mi to vyhodí TRUE .... přitom uploadovací script echuje "NEUPLOADNUTO 1"
No a když zkusím nastavit $path jen na $path = "../stroje/" . $name; tak se ten soubor do slořky "stroje" dostane... nechápu
Alphard
Profil
Máte povolený výpis chyb? Zřejmě ne, povolte si ho.

Zkuste na 15. řádek dát
umask(0000);
a 17. zakomentovat.
Medvídek
Profil
Nich:
chmod("../stroje/".$id['id']."/", 0777);

chmod tuším neumí práva 0777, to umí pouze ftp_chmod
Nich
Profil
Alphard:
Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 106934 is not allowed to access /www/sites/4/site6934/public_html/stroje/148 owned by uid 33 in /www/sites/4/site6934/public_html/admin/index.php on line 197
Alphard
Profil
Nich:
No jo, safe mode. Hledejte, je to známý pojem, ale řešení složité. Já jsem měl zatím štěstí na hostingy, že byl vypnutý, takže z vlastní zkušenosti neporadím.
Nich
Profil
Alphard:
no holt budu mít ve složce "stroje" bordel, ale budu všchny uživatelský soubory cpát do ní... jen dám před soubor vždycky $id__jmeno_souboru, aby se v tom dalo aspon trochu vyznat :-)

i tak moc dík za pomoc :-) ale když to jde udělat jinak tak se mi nechce ten SAFE MODE vypínat
Nich
Profil
Ještě jsem zkusil funkci ftp_mkdir místo mkdir ale vyplivlo mi to tohle:

Warning: ftp_mkdir() [function.ftp-mkdir]: Can't create directory: No such file or directory in /www/sites/4/site6934/public_html/admin/index.php on line 189

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access ../stroje/154/nadpis_staveb.png in /www/sites/4/site6934/public_html/admin/index.php on line 199

asi to holt se SAFE MODEm nepude :-)
Lamicz
Profil
Nich:
Těmi FTP fcemi to jde - vytvoří se složka, nastaví se jí přes ftp_chmod 0777, pak se tam nacpe soubor, nastaví se mu 0644. Jediný zásek je v tom, že ta cesta pro FTP musí být přesně stejná jako např. Total Commandera, takže včetně www/subdomains/... apod. Zkrátka jak se připojí FTP klient na hosting, plná cesta až k dané složce. Další podmínka je NEKOMBINOVAT FTP fce a klasický upload. Buď jedno nebo druhé. Takže žádné move_uploaded_file ale ftp_put. Viz PHP FTP. Důležitá je ta plná cesta a ftp_chmod v každém kroku - když se to nastaví blbě, tak hrozí, že ten soubor nepůjde ani smazat z FTP nebo přečíst prohlížečem (což je logické), na adr. i soubory. Na SAFE MODE je to jediné řešení jak to tam dostat (alespoň jsem na jiné nepřišel).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0