PDA

View Full Version : مشکل در ساخت یک پوشه و آپلود فایل در آن



realman
جمعه 30 آذر 1386, 14:17 عصر
با سلام.
من به صورت زیر یک پوشه می سازم .ولی وقتی سعی می کنم فایلی رو توی اون آپلود کنم،هیچ اتفاقی نمی افته.با بررسی که انجام دادم فهمیدم مشکل از اونجاست که owner پوشه ای که ساختم apache ست شده.(تنها تفاوتش با پوشه ای که می تونم توی اون فایل ها رو آپلود کنم)
(اسکریپت برای پوشه هایی که owner اونها با نام user خودم ست شده بدون هیچ مشکلی کار می کنه.)
در ضمن با استفاده از تابع chown هم نتونستم owner پوشه رو تغییر بدم.
چه باید کرد؟؟؟



$path = "file/upload/".$id;
if (mkdir($path)) {
chmod($path, 0777);
$user_name = "xxxx";
chown($path, $user_name);
}

ealvandi
شنبه 01 دی 1386, 19:05 عصر
permission ها رو بررسی کنید

oxygenws
یک شنبه 02 دی 1386, 08:19 صبح
mode رو می تونی زمان اجرای mkdir هم بدی:
http://us3.php.net/mkdir

و اگر PHP به صورت Module نصب شده باشه، مسلما شاخه با user مربوط به آپاچی ساخته میشه و اگه CGI باشه با user خودت. و در هر صورت اگه دسترسی اون شاخه رو ۷۷۷ بذاری، همه باید بتونند توش فایل جدید بریزند، *حتی خودت از طریق FTP*

realman
دوشنبه 03 دی 1386, 10:10 صبح
و اگر PHP به صورت Module نصب شده باشه، مسلما شاخه با user مربوط به آپاچی ساخته میشه و اگه CGI باشه با user خودت. و در هر صورت اگه دسترسی اون شاخه رو ۷۷۷ بذاری، همه باید بتونند توش فایل جدید بریزند، *حتی خودت از طریق FTP*

بله.حرف شما کاملا درسته.این موضوع خودم رو هم گیج کرده.غیر از تغییر owner پوشه هیچ چیز دیگه ای به ذهنم نمی رسه.
از قرار معلوم PHP رو سرور من به صورت Module نصب شده.permission پوشه توسط تابع chmod به درستی 777 ست میشه ولی owner اون با تابع chown تغییر نمی کنه.آیا این تابع به شکل خاصی باید اجرا بشه و یا شرایط خاصی رو می طلبه؟
جناب oxygenws یه نظر شما چه چیزهایی ممکن باعث بروز این مشکل شده باشند.هر چیزی که به ذهنتون می رسه لطفا بگید،من چک می کنم.

oxygenws
دوشنبه 03 دی 1386, 10:21 صبح
ولی owner اون با تابع chown تغییر نمی کنه.آیا این تابع به شکل خاصی باید اجرا بشه و یا شرایط خاصی رو می طلبه؟مسلما chown نمی شه :) یعنی آپاچی حق نداره chown کنه، چون ساختار لینوکس اصلا این اجازه رو نمی ده. :) مگر در شرایط خاص که عموما در اون شرایط خاص آپاچی یا سرور رو کانفیگ نمی کنند!

راهنمای PHP رو هم اگر درست بخونی، همه چی داره:

Only the superuser may change the owner of a file.
(تنها تفاوتش با پوشه ای که می تونم توی اون فایل ها رو آپلود کنم)منظورت از آپلود چیه؟؟ از چه طریق؟؟

realman
دوشنبه 03 دی 1386, 10:59 صبح
منظورت از آپلود چیه؟؟ از چه طریق؟؟

آپلود از طریق یک script انجام می شه.(move_uploaded_file)

oxygenws
دوشنبه 03 دی 1386, 11:10 صبح
آپلود از طریق یک script انجام می شه.(move_uploaded_file)
مشکل احتمالا به اون اسکریپتت بر می گرده و ربطی به مشکلی که اینجا گفتی نداره :)
اون کدت و متن خطایی که برمی گردونه رو بنویس.

realman
دوشنبه 03 دی 1386, 11:21 صبح
مشکل احتمالا به اون اسکریپتت بر می گرده و ربطی به مشکلی که اینجا گفتی نداره :)
اون کدت و متن خطایی که برمی گردونه رو بنویس.

کد آپلود فایل هیچ مشکلی نداره.چون همونطور که گفتم در پوشه هایی که owner اون ها user خورم بود آپلود به درستی انجام می شد.

move_uploaded_file($_FILES['myfile']['tmp_name'],"$target");
در ضمن هیچ خطایی هم برگردونده نمی شه.
مشکل رو پیدا کردم.
safe mode رو off کردم حل شد.
ولی نفهمیدم چرا؟!!

oxygenws
دوشنبه 03 دی 1386, 11:34 صبح
safe mode رو off کردم حل شد.
کار خوبی کردی. با safe mode کار نکن، به زودی از بین خواهد رفت.