כניסה לממשק האחסון

24/7

שירות ותמיכה טכנית. תגובה תוך- 10 דקות
03-6030055

יצרתי תיקיה באמצעות PHP אך איני יכול/ה לכתוב בתוכה, מדוע?

על מנת לשמור על הפרדה בין חשבונות האחסון על השרת אנו משתמשים במודול safe mode של PHP. אחת המגבלות של safe_mode היא שסקריפט לא יכול לכתוב לתיקיה שלא שייכת לאותו משתמש/קבוצה כמו הסקריפט עצמו. כך לדוגמא, אם אתה יוצר תיקיה בעזרת PHP, היא תיווצר בבעלות משתמש/קבוצה httpd בעוד הסקריפט שייך למשתמש/קבוצה של חשבון האחסון (לדוגמא user1/user1). גם אם התיקיה תקבל הרשאה 777 כשתיצור אותה, safe_mode יסרב לאפשר לסקריפט לכתוב לתוכה, בגלל הבדלי הבעלות. פתרון חלקי שלנו לבעיה הינה תוכנית שאנו מריצים ע"ב יומי, המשנה את הבעלות לכל הקבצים בתיקיות המשתמשים למשתמש/קבוצה של הלקוח, לדוגמא user1/group1. זהו לא ממש פתרון טוב אם באותו זמן שהתיקיה נוצרת גם רוצים לכתוב לתוכה, אך זה מאפשר לסקריפטים שפותחים תיקיות לצרוך כתיבה מראש לעבוד, ואחרי זמן קצר (שעה עד 24 שעות) הסקריפטים יוכלו לכתוב לתוכן מכיוון ואנו נשנה את הרשאות. מכיוון והתוכנית לשינוי הרשאות לוקחת לא מעט זמן לרוץ על כל החשבונות, לא ניתן להריץ אותו יותר מפעם ביום. פתרון נוסף לבעיה הוא פתיחת התיקיות על השרת בעזרת php-ftp. ניתן באמצעות PHP לדמות חיבור FTP לשרתים, וכאשר עובדים בשיטה זו, התיקיות והקבצים שיווצרו יקבלו את ההרשאות של הלקוח, כאילו נוצרו באמצעות כל תכנת FTP. החסרון הוא ששם המשתמש והסיסמא ל-FTP צריכים להמצא גלויים בתוך קובץ, כמו פרטי חיבור לבסיס נתונים לדוגמא. אם בוחרים בשיטה זו, מומלץ לפתוח חשבון FTP נוסף באמצעות ממשק הניהול ולהגביל אותו לתיקיה מסוימת בלבד. דוגמא ליצירת תיקיה ומתן הרשאות באמצעות -php-ftp // create directory through FTP connection $path = "/"; $newDir = "test"; $realpath = "/full/physical/path/"; function FtpMkdir($path, $newDir) { $server=’SERVERNAME’; // ftp server $connection = ftp_connect($server); // connection // login to ftp server $user = "FTPUSERNAME"; $pass = "FTPPASSWORD"; $result = ftp_login($connection, $user, $pass); // check if connection was made if ((!$connection) || (!$result)) { return false; exit(); } else { ftp_chdir($connection, $path); // go to destination dir ftp_mkdir($connection,$newDir); // create directory ftp_site($connection, "chmod 777 $newDir"); ftp_close($connection); // close connection return $newDir; } } $ret=FtpMkdir($path, $newDir); ?>

אז למה אתה מחכה? לחץ כאן לפתיחת חשבון!

התחל עכשיו >