php upload file

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

php upload file

Δημοσίευση από nikos-manias » 05 Μαρ 2010 14:09

Γειά σας!

Αντιμετωπίζω και εγώ ένα πρόβλημα με τη συνάρτηση move_uploaded_file.
Διάβασα και τα άλλα posts pου βρήκα αλλά δεν μπόρεσα να βγάλω άκρη.
Οπότε περιγράφω και εγώ σύντομα το πρόβλημά μου.

Εχω ένα script για να ανεβάζω αρχεία στον server μου.
Το κομμάτι του κώδικα που αναλαμβάνει τη μετακίνηση του αρχείου στο φάκελο που θέλω είναι:

Κώδικας: Επιλογή όλων

$target_path=$_SERVER['DOCUMENT_ROOT']."/uploads/";
		if(count($_FILES["user_file"])) //Έλεγχος αν ο χρήστης έχει επισυνάψει αρχείο
		{
			
			$tmp_name=$_FILES["user_file"]["tmp_name"];
			$file_name=$_FILES["user_file"]["name"];
			$size=$_FILES["user_file"]["size"];
			$file_type=$_FILES["user_file"]["type"];
			
		
				$uploadPath=$target_path.$file_name;
				
				if(move_uploaded_file($tmp_name,$uploadPath))
				{
						
					echo "Το αρχείο καταχωρήθηκε επιτυχώς";
					$fileHandle=fopen($uploadPath,"r");
					$fileContent=fread($fileHandle,$size);
					$fileContent=addslashes($fileContent);
					
					
				}
		}

Το αρχείο ανεβαίνει κανονικά στον server όπως διαπιστώνω από μερικά echo που προσθέτω στον κώδικά μου.
Temp Name:/var/www/domains/[mydomain]/tmp/phpZ3F7q1
Θέλω λοιπόν να μετακινήσω το αρχείο αυτό στο φάκελο /uploads που υπάρχει μέσα στο site_root (/var/www/domains/[mydomain]/docs/uploads/myfile.txt)

Τότε όμως παίρνω τα εξής μυνήματα:

Warning: move_uploaded_file(/var/www/domains/[mydomain]/docs/uploads/myfile.txt) [function.move-uploaded-file]: failed to open stream: Permission denied in /var/www/domains/[mydomain]/docs/upload.php on line 59

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/www/domains/[mydomain]/tmp/phpZ3F7q1' to '/var/www/domains/[mydomain]/docs/uploads/myfile.txt' in /var/www/domains/[mydomain]/docs/upload.php on line 59


Το hosting είναι στο myhosting.com.

Έχω επιχειρήσει να αλλάξω τα permissions του φακέλου tmp σε 777 μέσα από το dreamweaver αλλα χωρίς επιτυχία.

Εαν έχει κάποιος κάποια ιδέα ή εαν βλέπει κάποιο λάθος στον κώδικα είμαι ανοιχτός σε προτάσεις.

Ελπίζω να εδωσα μια ικανοποιητική περογραφή
Τελευταία επεξεργασία από το μέλος nikos-manias την 05 Μαρ 2010 14:16, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

php upload file

Δημοσίευση από burnmind » 05 Μαρ 2010 14:13

Γράψε και το error που σου δίνει

nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

php upload file

Δημοσίευση από nikos-manias » 05 Μαρ 2010 14:17

Το ανέβασα κατα λάθος πρίν τελειώσω το γράψιμο.
Τώρα είναι ετοιμο!

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

php upload file

Δημοσίευση από burnmind » 05 Μαρ 2010 14:26

nikos-manias έγραψε:Έχω επιχειρήσει να αλλάξω τα permissions του φακέλου tmp σε 777 μέσα από το dreamweaver αλλα χωρίς επιτυχία.

Εαν έχει κάποιος κάποια ιδέα ή εαν βλέπει κάποιο λάθος στον κώδικα είμαι ανοιχτός σε προτάσεις.
Με μια πρώτη ματιά ο κώδικας σωστός φαίνεται. Τα permissions του tmp νομίζω είναι από default ok (ούτως ή άλλως λες ότι ήδη ανεβαίνει εκεί). Δοκίμασε να αλλάξεις τα permissions του upload folder.

nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

php upload file

Δημοσίευση από nikos-manias » 05 Μαρ 2010 14:32

Το έχω κανει ήδη αυτό από το dreamweaver.
Το δοκίμασα και με chmod μέσ από το script αλλά το αποτέλεσμα είναι:

Warning: chmod() [function.chmod]: Operation not permitted in /var/www/domains/[mydomain]/docs/upload.php on line 59

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

php upload file

Δημοσίευση από burnmind » 05 Μαρ 2010 14:35

nikos-manias έγραψε:Το έχω κανει ήδη αυτό από το dreamweaver.
Το δοκίμασα και με chmod μέσ από το script αλλά το αποτέλεσμα είναι:

Warning: chmod() [function.chmod]: Operation not permitted in /var/www/domains/[mydomain]/docs/upload.php on line 59
Δοκίμασε να επικοινωνήσεις με την εταιρεία που έχει αναλάβει το hosting να δεις τι θα σου πουν κι αυτοί τότε.

nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

php upload file

Δημοσίευση από nikos-manias » 05 Μαρ 2010 14:38

M;olις μου απάντησαν και είπαν να μεταφέρω το αρχείο κάτω από το φάκελο docs που είναι και όλα τα αρχεία του site για να μπορέσω να αλλάξω τα δικαιώματα (Χαιρω πολύ!!!).
Αλλα το θέμα είναι ότι ο default φακελος για το ανέβασμα αρχείων είναι έξω από τον docs!
Είναι στον φάκελο tmp.

Και νομίζω ότι με ini_set δεν μπορώ να αλλάξω το upload_tmp_dir!

Οπότε τι μου μένει;

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

php upload file

Δημοσίευση από burnmind » 05 Μαρ 2010 14:46

nikos-manias έγραψε:M;olις μου απάντησαν και είπαν να μεταφέρω το αρχείο κάτω από το φάκελο docs που είναι και όλα τα αρχεία του site για να μπορέσω να αλλάξω τα δικαιώματα (Χαιρω πολύ!!!).
Αλλα το θέμα είναι ότι ο default φακελος για το ανέβασμα αρχείων είναι έξω από τον docs!
Είναι στον φάκελο tmp.

Και νομίζω ότι με ini_set δεν μπορώ να αλλάξω το upload_tmp_dir!

Οπότε τι μου μένει;
Λογικά εννούν τον τελικό φάκελο (uploads ή ό,τι όνομα του έχεις δώσει) και όχι τον tmp ο οποίος νομίζω είναι κοινός για όλον τον shared server (δεν είμαι 100% σίγουρος). Ο φάκελος που προσπαθείς να τα αποθηκεύσεις είναι μέσα στον φάκελο docs? Πες τους να σου πουν και ένα παράδειγμα του τι εννοούν για να είσαι σίγουρος.

nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

php upload file

Δημοσίευση από nikos-manias » 05 Μαρ 2010 14:48

Ναι ο τελικός φάκελος-προορισμός είναι μέσα στο /docs.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

php upload file

Δημοσίευση από burnmind » 05 Μαρ 2010 14:53

nikos-manias έγραψε:Ναι ο τελικός φάκελος-προορισμός είναι μέσα στο /docs.
Το παρακάτω είπες δε δουλεύει,ε;

chmod($uploadPath, 0744);

Κάνε κι ένα echo το $uploadPath για να σιγουρευτείς ότι είναι αυτό που θέλεις.

Από εκεί και πέρα πρίξτους να σου δώσουν λύση, εκτός και αν κάποιος άλλος έχει να προτείνει τίποτα! :-)

nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

php upload file

Δημοσίευση από nikos-manias » 05 Μαρ 2010 15:30

Μήπως υπάρχει άλλος τρόπος ώστε να ανεβάσω το αρχείο εξαρχής σε φάκελο που θα ορίσω εγω;
Σημειώνω ότι τωρα το ανεβάζω με html form...[/flash]

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

php upload file

Δημοσίευση από burnmind » 05 Μαρ 2010 15:41

nikos-manias έγραψε:Μήπως υπάρχει άλλος τρόπος ώστε να ανεβάσω το αρχείο εξαρχής σε φάκελο που θα ορίσω εγω;
Σημειώνω ότι τωρα το ανεβάζω με html form...[/flash]
Νομίζω πως πρέπει οπωσδήποτε να περάσει από τον εκάστοτε /tmp κι έπειτα να κάνεις εσύ τη μετονομασία και να το στείλεις όπου θες, αλλά δεν χάνεις τίποτα να ψάξεις.

Η εταιρεία σου δε σου έδωσε λύση; Μήπως δεν κατάλαβες κάτι από αυτά που σου είπαν; Λίγο δύσκολο να μην επιτρέπουν το upload. Εκτός κι αν τελικά είναι κάπου αλλού το πρόβλημα κι όχι στα permissions.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php upload file

Δημοσίευση από Apostolis_38 » 05 Μαρ 2010 16:41

Αν θέλεις να αποθηκεύσεις έξω από τον docs θα πρέπει να δημιουργήσεις το φάκελο από το cpanel/plesk και να του δώσεις από εκεί τα δικαιώματα.
Ετσι ο φάκελος που θα δημιουργήσεις δεν θα έχει δημιουργηθεί σαν "root" αλλά με το δικό σου account και τα ανάλογα δικαιώματα.
Αν θέλεις να το αποθηκεύσεις κάτω από τον docs μπορείς άνετα να τον δημιουργήσεις και να τον ανεβάσεις με το dreamweaver.
ΔΕΝ πρέπει να τον δημιουργήσουν αυτοί γιατί δεν θα φτιαχτεί με τον σωστό account.

Αν και στις δύο περιπτώσεις δεν σε αφήνει είναι σίγουρα θέμα δικαιωμάτων του account σου.


@burNMind: έχεις δίκιο. Κάθε upload πρέπει να περάσει από τον εκάστοτε tmp.
Απλώς αν έχεις πρόσβαση στο php.ini μπορείς να του ορίσεις εσύ όποιο φάκελο θέλεις σαν tmp.
Δεν ξέρω όμως τι γίνεται στην περίπτωση που έχεις και php.ini τοπικά στο site.
Δεν ξέρω δηλαδή αν μπορεί να παρακαμφθεί το ini του server και να "υπερισχύσει" αυτό του site σου.

nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

php upload file

Δημοσίευση από nikos-manias » 05 Μαρ 2010 23:29

Τώρα που ξανακοιτάω τα permissions τοθ tmp βλέπω ότι έχει δκαιώματα 777, όπως φαίνεται και στην εικόνα που επισυνάπτω.
Οπότε μήπως κάνω κάπου αλλού το λάθος;[/img]
Συνημμένα
permissions.png
permissions.png (10.99 KiB) Προβλήθηκε 2548 φορές

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

php upload file

Δημοσίευση από korgr » 06 Μαρ 2010 10:07

Ειπαμε το προβλημα σου δεν ειναι ο φακελος tmp
Εκει μια χαρα αποθηκευεται το αρχειο προσωρινα μετα το upload
Το μηνυμα σου λεει πως δεν μπορει να το μεταφερει στο τελικο φακελο που θες (ο φακελος αυτος δεν εχει ορισμενα σωστα δικαιωματα εγγραφης).
Αρα αφου δεν εχεις προσβαση να αλλαξεις δικαιωματα σε αυτο τον φακελο ("uploads/"), τοτε φτιαξε ενα δικο σου φακελο οπως σου ειπαν και δωστου τα δικαιωματα που χρειαζεται (0777). Τι δεν καταλαβαινεις απο αυτα που σου λενε τα παιδια?

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες