![]() |
יצירת תיקיה כאשר אני בSAFE MODE
ניסיתי ליצור תיקיה בצורה הבאה
PHP קוד:
Warning: mkdir() [function.mkdir]: Permission denied בבקשה עזרה יכול להיות שאני בSAFE MODE-לא משנה בכל מקרה אני רוצה שהקוד יעבוד בכל מקרה גם אם אני במצב בבטוח וגם אם לא אשמח לעזרה |
תוריד את הסלאש בהתחלה.
או שתסים נקודה בהתחלה: קוד:
./some_dir |
PHP קוד:
Warning: mkdir() [function.mkdir]: Permission denied אגב כשניסיתי לשים שם של תיקיה שכבר קיימת ככה <?php mkdir("./new1/", 777); ?> זה רושם Warning: mkdir() [function.mkdir]: File exists in זה אומר שהפוקנציה די פועלת רק יש איזה בעיה בהר אשות או משהו כזה אשמח לעזרה |
1) הפונ' מקבלת כברירית מחדל הרשאות 777
2) נסה לשים את הדרך המלאה home/user/domain/ whatever 3) הייתה לי בעיה דומה אחרי שאתה יוצר את התיקייה יש איתה בעיות בהעלאה וכו' |
ניסיתי לעשות ככה
PHP קוד:
Warning: mkdir() [function.mkdir]: No such file or directory in |
אם אתה מביא את הpath המלא, אין צורך בנקודה בהתחלה.
תרא דוגמא: (ב CLI) קוד:
|
שוב שגיאה
הקוד PHP קוד:
|
עכשיו חסר לך סלאש בהתחלה.
|
הוספתי סלאש אותה שגיאה
|
תמחק את ה777
תנסה ככה קוד:
<?php |
צא מSAFE MODE?
|
ציטוט:
ובכל מקרה אני רוצה שיעבוד גם במצב בטוח המערכת שלי תפעל בשרתים שיש את זה שם ציטוט:
Warning: mkdir() [function.mkdir]: No such file or directory in |
עכשיו כשחשבתי על זה בראש צלול,
בוא נתבונן רגע בתמונה הזאת: יש לך תיקיה: קוד:
/home/user על התיקיה הזאת יש הרשאה:700, rwx למשתמש, וכלום לקבוצה וכלום לאחרים. עכשיו הסקריפט שלך, רץ תחת apache כניראה, אחרת למה ה safe mode? ולכן מקבל את ההרשאות של apache, כלומר היוזר www:www (או whatever). ולכן הסקריפט שלך מקבל מהמערכת הפעלה גישה נדחתה, כי אין ל apache הרשאות כתיבה לשם. רעיון מאוד גרוע: לתת 777 לתיקיה שבתוכה אתה רוצה לייצור תיקיות עם הסקריפט שלך, ואז זה יעבוד. הנה דוגמא על אחסון שיש לו safe_mode: דרך FTP: קוד:
ftp> put safe_dir.php קוד:
<?php קוד:
string(1) "1" Success קוד:
ftp> ls test_dir |
ההסברים שלך מקצועיים אבל אני לא מבין
הראתי לך את הקוד שלי מה אני צריך לשנות שזה יעבוד בבקשה |
מה שניסיתי להסביר הוא שהבעיה היא לא בקוד,
ובגלל אילוצים של השרת, (לא ממש קשור לsafe_mode אלה לסיבה שבגללה מפעילים את ה safe_mode) אין פתרון _טוב_ לבעיה שלך. פתרון גרוע, כמו שרשמתי מקודם, הוא לתת לתיקיה, שבה אתה רוצה לייצור את התיקיה הרשאות כתיבה לאחרים (chmod 777 למשל). זה פתרון גרוע, אבל זה כבר לפעם אחרת. |
אני מזמן לא עבדתי עם SAFE MODE אבל אני זוכר שזה באמת בעיה ליצור תיקיה עם SAFE MODE. אני זוכר שפשוט לא מצאתי פתרון לזה כשה חיפשתי. בפורומים ברשת אמרו שאי אפשר.אולי זה לא ככה אבל שוב, מזמן לא עבדתי עם SAFE MODE ואולי יש פתרון לזה.
|
דבר ראשון, כל הקבצים שהAPACHE מריץ, צריכים להיות עם הרשאות לAPACHE, ככה שלא רק שאין פסול בלתת לAPACHE הרשאות, זה אפילו מומלץ!
אבל בוא ניקח רגע צעד אחד אחורה, למה אתה צריך ליצור תיקיות? משהו ספציפי ופרטני? אכפת לך לפרט כאן? כל הפונקציות מערכת מעמיסות בשימוש לא נכון, והן תלויות מערכת. קרי - אם אתה בונה מערכת להפצה, שתגיד לסוגים שונים של מערכות הפעלה (אפילו windows/linux), לא מומלץ לעבוד עם פונקציות מערכת. אם תפרט כאן את הצורך, אולי אפשר להגיע לפתרון נוח ואולי אפילו יותר טוב (כמו mod_rewrite למשל) |
תנסה לתת הרשאה 0777 עם 0 בהתחלה כך:
PHP קוד:
|
ציטוט:
נוצרת כאן בעיה שכולם יכולים לגשת לקבצים של כולם, הרי את הסקריפטים של כולם אפאצ'י יכול לקרוא כדי להריץ, וגם כולם רצים תחת המשתמש של אפאצ'י ומכאן החור אבטחה. את הבעיה הזאת בא לפתור safe_mode ע לכל נגזרותיו. הפתרון הזה גרוע, PHP לא צריך להתעסק בדברים שמערכת הפעלה צריכה לעשות ויודעת לעשות את זה טוב. במשך זמן חייו של הsafe mode היו כל כך הרבה פרצות שאפשרו לעקוף אותו. בוא נתבונן רגע בSecurityFocus, ניראה ממתי מצאו את החור האחרון שקשור לsafe mode. יש לנו פה באג מספטמבר השנה, ועוד רבים, ואילו רק הדברים שמצאו PHP גם לא משלים אף אחד, הם עצמם אומרים שהפתרון גרוע: http://il2.php.net/safe_mode ציטוט:
אז כן, אם היה אפשר שרק לאפאצ'י יהיה את הגישה לקבצים שלנו, זה מצויין, אבל לsafe mode אין שום קשר ליכולת הזו. |
יש לי בעיה גם בפונקציה שמעתיקה קבצים
השגיאה copy(add1.php) [function.copy]: failed to open stream: Permission denied in הקוד PHP קוד:
אין פיתרון? |
זה הרעיון של ה SAFE MODE, לחסום שטויות.
מה הרעיון של לדלג עליו? ברוב האפליקציות שמתקינים היום נהוג לכתוב מראש שיש לבטל SAFE MODE. |
ציטוט:
מה הכוונה ברוב האפליקציות שמתקינים היום נהוג לכתוב מראש שיש לבטל SAFE MODE. מבטלים את ה SAFE MODE בשרתים עצמם?או איפה |
משהו לא נכון נדמה לי
בדקתי בשרת free-site-host.com הרצתי phpinfo וראיתי שה safe_mode פועל גם ב Local Value וגם ב Master Value PHP קוד:
מוזר אני רואה מצב בטוח דלוק וזה עובד ובשרת אחר הרצתי גם PHPINFO וראיתי שם הsafe_mode מכובה ב Local Value אבל פועל ב Master Value ולמרות זאת שהרצתי את אותו קוד היה לי בעיה שוב copy(2.php) [function.copy]: failed to open stream: Permission denied in אבל הנה אני בודק בעוד שרת עכשיו שב safe_mode יש ON גם ב Local Valueוגם ב Master Value וזה לא עובד בבקשה מה אני אמור לאמר לבעל השרת שיאפשר לי בשביל שהפונקציות האלה יעבדו לי זה לא רק מצב בטוח כמו שאני רואה בPHPINFO למה? |
לבקשתו של פותח האשכול, אני מקפיץ אותו.
|
אתה יכול לנסות להשתמש בפונקציות FTP...
|
איזה פונקציות FTP
ואני רוצה כעיקרון ב PHP מה לאמר לבעל השאת לאפשר לי |
כל הזמנים הם GMT +2. הזמן כעת הוא 17:56. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ