עבור לתוכן

בעייה מוזרה בPHP כבר כמה שעות טובות שאני שובר את הראש

Featured Replies

פורסם

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

זאת הפונקציה, מי שרוצה יכול להשתמש:

function unzip($file, $dir) {
$zip = zip_open($file);
if ($zip) {
while ($zip_entry = zip_read($zip)) {
// Skip non-images in the zip file.
if (!is_image(zip_entry_name($zip_entry))) continue;

if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$path_file = str_replace("/",DIRECTORY_SEPARATOR, $dir . '/' . zip_entry_name($zip_entry));
$fp = fopen($path_file, "w");
fwrite($fp, $buf);
fclose($fp);
zip_entry_close($zip_entry);
}
}
zip_close($zip);
}
}

הפונקציה פעלה ממש מצויין בשרת הראשון שהשתמשתי בה (PHP Version 4.4.7) (SAFE_MODE OFF) אבל בשרת השני הבעייה (PHP Version 5.2.4) (SAFE_MODE ON).

מה שקורה שם זה שברגע שמתבצעת השורה הזאת:

$zip = zip_open($file);

ברגע זה הכל נעצר, כל שורות הקוד שאמורות להתבצע לאחר מיכן, הן בפונקציה והן מחוץ לפונקציה לא מתבצעות, כאילו הפעילו את הפונקציה die

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

אם למישו יש טיפה של מושג בבקשה אני תקוע על זה.

תודה,

אבי שרביט.

פורסם

תבדוק הרשאות על התיקיה שבתוכה הקובץ יושב.

אם ליוזר שהPHP מריץ יש הרשאות לגעת בקבצים שם בכלל.

חוץ מזה, אני לא מכיר כ"כ את השרת הזה, אבל נשמע כאילו הsafe mode הוא פרמטר שדיי משנה (מצב בטוח...), אולי בגלל זה?

פורסם
  • מחבר

תבדוק הרשאות על התיקיה שבתוכה הקובץ יושב.

אם ליוזר שהPHP מריץ יש הרשאות לגעת בקבצים שם בכלל.

חוץ מזה, אני לא מכיר כ"כ את השרת הזה, אבל נשמע כאילו הsafe mode הוא פרמטר שדיי משנה (מצב בטוח...), אולי בגלל זה?

הקןבץ יושב בתיקייה של הקבצים הזמניים (TMP), אני לא מאמין שזאת הבעייה, בכל מקרה אני ינסה להעלות את הקובץ ZIP לתיקייה של הגלרייה ומשם לחלץ אותו...

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

http://il2.php.net/manual/en/features.safe-mode.functions.php

פורסם
  • מחבר

http://il2.php.net/error-reporting

תשנה את זה בעמוד שאתה מריץ את הקוד הבעייתי ל E_ALL

אין אחי עדיין אותו דבר

פורסם

את השורה של הדיווח שגיאות נסה לשים בדיוק לפני הקריאה ל zip_open

פורסם
  • מחבר

את השורה של הדיווח שגיאות נסה לשים בדיוק לפני הקריאה ל zip_open

עדיין אותו דבר

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים