הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה|מעצבנת בMKDIR תוך כדי העלאה (https://hosts.co.il/forums/showthread.php?t=98741)

M.a.T.a.N 20-07-12 17:00

בעיה|מעצבנת בMKDIR תוך כדי העלאה
 
יש לי בעיה ממש מעצבנת ודי מוזרה...
יש לי את הקוד הבא:
PHP קוד:

<?php

$uploaddir 
dirname($_SERVER['SCRIPT_FILENAME']).'/files/guests/m/';
$uploadfile $uploaddir $_FILES['userfile']['name'];

if (!
is_dir($uploaddir)) {
            
mkdir($uploaddir0777);
            
chmod($uploaddir0777);
}
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo 
"File is valid, and was successfully uploaded.\n";
} else {
   echo 
"Upload failed";
}


?> 
<form enctype="multipart/form-data" action="up.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

זה קוד העלאה ממש ממש פשוט, הבעיה היא ככה:
כאשר התיקייה נוצרת דרך הקוד עצמו (עם ההרשאות 777, זה נותן את ההרשאות בסדר גמור) - הההעלאה נכשלת.
כאשר אני יוצר את התיקייה דרך FTP ונותן לה הרשאות 777 (אותו דבר בדיוק) ההעלאה מצליחה.

יש למישהו מושג מה הבעיה? זה פשוט מעצבן ומאוד מוזר לי למה זה קורה, הרי התיקייה נוצרת כמו שצריך םעם ההרשאות המתאימות (נבדק) ולא מצליח להעלות...תודה מראש

בניה 20-07-12 20:13

הPHP רץ תחת היוזר של APACHE, והFTP רץ תחת היוזר שלך במכונה.
הPHP כנראה לא יכול לתת הרשאת 777 לתקייה שהוא יצר שהיא בתוך תקייה שלא תחת היוזר שלו

M.a.T.a.N 21-07-12 20:49

הבנתי וראיתי תשובה כזאת, מה שלא הבנתי קודם כל זה אם הPHP לא יכול לתת הרשאות 777 איך יכול להיות שזה כן נותן?
כלומר, אחרי שהתיקייה נוצרת דרך הPHP אני נכנס דרך הFTP (של FALSHFXP אם זה משנה..) ורואה שההרשאות של התיקייה הם באמת 777...
עוד דבר, אם קיים פתרון לזה? תודה

*רציתי רק להזכיר, באמת כשאני מנסה לתת הרשאות 777 דרך הפונקציה של MKDIR - ההרשאות לא ניתנות!
אבל כמו שאתה רואה בקוד למעלה, אחרי הMKDIR הוספתי CHMOD לתת הרשאות 777 וזה מה שבאמת נתן הרשאות 777 לתיקייה - ועדיין לא עוזר.

בניה 21-07-12 21:53

כדי לפתור את תסבוכת ההרשאות הזו, צור את התקייה דרך הFTP וזהו

M.a.T.a.N 21-07-12 22:29

תאמין לי שאני לא סתם מנסה לסבך את עצמי והייתי חושב על זה לבד...זה דבר שאני צריך כחלק מהמערכת.
בכל מקרה, תודה על הנסיון לעזרה!

דניאל 21-07-12 23:25

http://il.php.net/umask

M.a.T.a.N 21-07-12 23:55

מה הפונקציה הזו עושה? 0.ם לא כל כך הבנתי..
אם היא נותנת הרשאות (כמו שנראה לי הבנתי) אז זה לא עוזר, חוץ מזה ששוב - הרשאות 777 ניתנות כמו שצריך !
את זה אני בודק גם עם הFLASHFXP ובאמת ההרשאות ניתנות דרך CHMOD, הבעיה היא פשוט מוזרה שהקובץ לא מועלה לתקייה מסיבה כלשהיא.

Itay 22-07-12 01:13

מה ההרשאה של התיקיות שבהן נמצאת התיקיה האחרונה שאליה אתה מעלה?
אם הכל 777 וזה לא עובד, תנסה ליצור את כל המבנה של התיקיות הזה דרך ה-PHP ותבדוק אם זה עובד

ובקשר לזה שההרשאות ניתנות כמו שצריך וה"סיבה כלשהיא" - תדאג שאתה רואה ב-FlashFXP את ה-Owner (או UID) ואת ה-Group (או GID) ותוכל להבין מה הבעיה, ה-Owner של התיקיות שנוצרות דרך ה-PHP ואלו שנוצרות דרך ה-FTP יהיו שונים לפי מה שאתה מתאר, זה בגלל איך שה-PHP רץ על השרת

M.a.T.a.N 22-07-12 02:53

ציטוט:

מה ההרשאה של התיקיות שבהן נמצאת התיקיה האחרונה שאליה אתה מעלה?
777

ציטוט:

אם הכל 777 וזה לא עובד, תנסה ליצור את כל המבנה של התיקיות הזה דרך ה-PHP ותבדוק אם זה עובד
נסתי, לא עוזר, כמו שאי אפשר להעתיק/להעלות קובץ לתיקייה שנוצרת דרך הPHP (כמו שאמרתי) כך אי אפשר ליצור תיקייה תחת תיקייה שנוצרת דרך PHP

בקשר למה שאמרת בסוף - לא הבנתי...אתה מתכוון לOWNER וה-GROUP כשאני בודק/עורך את ההרשאות CHMOD?
כי אם כן אני לא שם לב להבדל בין CHMOD שניתן לתיקייה דרך יצירתה בPHP לCHMOD שאני נותן דרך יצירת התיקייה בFLASHFXP שגם הוא 777

בניה 22-07-12 10:04

אם תתקין את הPHP בFCGI ולא APACHE MODULE, תוכל שהוא ירוץ על היוזר שלך וגם זה יפתור את הבעיה.


כל הזמנים הם GMT +2. הזמן כעת הוא 14:29.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ