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

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

AlmogBaku 16-10-08 13:12

צא מSAFE MODE?

dabi 16-10-08 15:00

ציטוט:

נכתב במקור על ידי Baku (פרסם 673781)
צא מSAFE MODE?

אין לי אפשרות
ובכל מקרה אני רוצה שיעבוד גם במצב בטוח
המערכת שלי תפעל בשרתים שיש את זה שם
ציטוט:

נכתב במקור על ידי InetKey.Net (פרסם 673780)
תמחק את ה777
תנסה ככה
קוד:

<?php
mkdir("/home/myuser/domains/mydomain/public_html/v"); 
?>


אותה שגיאה
Warning: mkdir() [function.mkdir]: No such file or directory in

SDF 16-10-08 16:41

עכשיו כשחשבתי על זה בראש צלול,
בוא נתבונן רגע בתמונה הזאת:

יש לך תיקיה:
קוד:

/home/user
התקיה שייכת ל user:group
על התיקיה הזאת יש הרשאה:700,
rwx למשתמש, וכלום לקבוצה וכלום לאחרים.

עכשיו הסקריפט שלך, רץ תחת apache כניראה, אחרת למה ה safe mode?
ולכן מקבל את ההרשאות של apache, כלומר היוזר www:www (או whatever).

ולכן הסקריפט שלך מקבל מהמערכת הפעלה גישה נדחתה, כי אין ל apache הרשאות כתיבה לשם.

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

הנה דוגמא על אחסון שיש לו safe_mode:
דרך FTP:
קוד:

ftp> put safe_dir.php
local: safe_dir.php remote: safe_dir.php
229 Extended Passive mode OK (|||20676|)
150 Accepted data connection
100% |*************************************|  170    395.27 KB/s    00:00 ETA
226-File successfully transferred
226 0.161 seconds (measured here), 1.03 Kbytes per second
170 bytes sent in 00:00 (1.00 KB/s)
ftp> mkdir test_dir
257 "test_dir" : The directory was successfully created
ftp> chmod 777 test_dir
200 Permissions changed on test_dir
ftp> quit
221-Goodbye. You uploaded 1 and downloaded 0 kbytes.

הקובץ PHP:
קוד:

<?php
$where_create = "test_dir/";
$dir = "safe_mode_mkdir";
var_dump( ini_get('safe_mode') );

if (mkdir($where_create . $dir))
        echo 'Success';
else echo 'Failure';
?>

הפלט:
קוד:

string(1) "1" Success
תוצאה:
קוד:

ftp> ls test_dir
229 Extended Passive mode OK (|||39931|)
150 Accepted data connection
drwxr-xr-x    2 81      81            512 Oct 16 15:31 safe_mode_mkdir
226-Options: -l
226 1 matches total
ftp>

שים לב ל81 81, שזה היוזר\קבוצה של apache.

dabi 17-10-08 11:09

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

SDF 17-10-08 16:46

מה שניסיתי להסביר הוא שהבעיה היא לא בקוד,
ובגלל אילוצים של השרת, (לא ממש קשור לsafe_mode אלה לסיבה שבגללה מפעילים את ה safe_mode) אין פתרון _טוב_ לבעיה שלך.

פתרון גרוע, כמו שרשמתי מקודם, הוא לתת לתיקיה, שבה אתה רוצה לייצור את התיקיה הרשאות כתיבה לאחרים (chmod 777 למשל).

זה פתרון גרוע, אבל זה כבר לפעם אחרת.

pirsomet 18-10-08 01:34

אני מזמן לא עבדתי עם SAFE MODE אבל אני זוכר שזה באמת בעיה ליצור תיקיה עם SAFE MODE. אני זוכר שפשוט לא מצאתי פתרון לזה כשה חיפשתי. בפורומים ברשת אמרו שאי אפשר.אולי זה לא ככה אבל שוב, מזמן לא עבדתי עם SAFE MODE ואולי יש פתרון לזה.

omercnet 18-10-08 13:05

דבר ראשון, כל הקבצים שהAPACHE מריץ, צריכים להיות עם הרשאות לAPACHE, ככה שלא רק שאין פסול בלתת לAPACHE הרשאות, זה אפילו מומלץ!

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

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

Deagly 18-10-08 17:25

תנסה לתת הרשאה 0777 עם 0 בהתחלה כך:
PHP קוד:

<?php
mkdir
("/new/"0777);
?>

לפי בדיקה שלי זה אמור לעבוד.

SDF 18-10-08 19:06

ציטוט:

נכתב במקור על ידי omercnet (פרסם 674271)
דבר ראשון, כל הקבצים שהAPACHE מריץ, צריכים להיות עם הרשאות לAPACHE, ככה שלא רק שאין פסול בלתת לAPACHE הרשאות, זה אפילו מומלץ!

תוכנות של משתמש מסויים, צריכות לרוץ תחת המשתמש שלו, ולא כל הסקריפטים של כולם רצים תחת משתמש אחד, לצורך העניין האפאצ'י.
נוצרת כאן בעיה שכולם יכולים לגשת לקבצים של כולם, הרי את הסקריפטים של כולם אפאצ'י יכול לקרוא כדי להריץ, וגם כולם רצים תחת המשתמש של אפאצ'י ומכאן החור אבטחה.

את הבעיה הזאת בא לפתור safe_mode ע לכל נגזרותיו.
הפתרון הזה גרוע, PHP לא צריך להתעסק בדברים שמערכת הפעלה צריכה לעשות ויודעת לעשות את זה טוב.
במשך זמן חייו של הsafe mode היו כל כך הרבה פרצות שאפשרו לעקוף אותו.

בוא נתבונן רגע בSecurityFocus, ניראה ממתי מצאו את החור האחרון שקשור לsafe mode.

יש לנו פה באג מספטמבר השנה, ועוד רבים, ואילו רק הדברים שמצאו

PHP גם לא משלים אף אחד, הם עצמם אומרים שהפתרון גרוע:
http://il2.php.net/safe_mode
ציטוט:

The PHP safe mode is an attempt to solve the shared-server security problem. It is architecturally incorrect to try to solve this problem at the PHP level, but since the alternatives at the web server and OS levels aren't very realistic, many people, especially ISP's, use safe mode for now.
וזה גם למה בPHP 6 לא ניראה אותו יותר.

אז כן, אם היה אפשר שרק לאפאצ'י יהיה את הגישה לקבצים שלנו, זה מצויין,
אבל לsafe mode אין שום קשר ליכולת הזו.

dabi 19-10-08 01:39

יש לי בעיה גם בפונקציה שמעתיקה קבצים
השגיאה

copy(add1.php) [function.copy]: failed to open stream: Permission denied in
הקוד
PHP קוד:

<?php
$file 
'add.php';
$newfile 'add1.php';

if (!
copy($file$newfile)) {
    echo 
"failed to copy $file...\n";
}
?>

בטוח שזה בגלל המצב בטוח עושה את זה ?
אין פיתרון?


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

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