اجرا نشدن کد های پروژه روی مک

پرسیده شده
فعالیت 1178 روز پیش
دیده شده 485 بار
0

سلام

من فایل پیوست مربوط به دوره رو دانلود کردم و در زمپ قرار دادم. وقتی کد رو اجرا میکنم به این خطا میخوره: «خطا در آپلود فایل !!!» روی همه فرمت های تعریف شده هم تست کردم و باز هم خطا داد

 

وقتی این کد رو اجرا میکنم:

var_dump($_FILES['uploadedFile']);

نتیجه کد این میشه:

array(5) { ["name"]=> string(9) "image.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(25) "/opt/lampp/temp/phpKtHI99" ["error"]=> int(0) ["size"]=> int(814804) } /opt/lampp/temp/phpKtHI99

حالا میریم سراغ مشکلی که وجود داره!

مشکل از این شرط هست:

if(move_uploaded_file($fileTmpPath, $destPath)){
                $msg = 'فایل شما با موفقیت آپلود گردید';
                }else{
                $msg = 'خطا در آپلود فایل !!!';
                }

این شرط همیشه غلط false رو برمیگردونه! (نتیجه دو متغیر که چاپ میکنم به شکل پایین هست)

$fileTmpPath ----->  /opt/lampp/temp/phpPcWioD
$destPath    ----->  upload/6a9a7d42f8463aac545e04213b31ae34.png

راه حل این خطا چیه؟

فایل پیوست

سیدرضا بازیار
سیدرضا بازیار

17 بهمن 99

1
حذف شده

سلام.

این موضوع مربوط میشه به permission های سیستم عامل های یونیکسی که برای تمام PHP کار ها مهمه که در موردش اطلاعات کافی داشته باشن. چون PHP کارها عمدتا از هاست یا سرور های لینوکسی استفاده میکنن که این لینوکس هم ازین قاعده پیروی میکنه. در این زمینه مک یا لینوکس باهم تفاوتی ندارن.

شما میتونین یا دستی یا از طریق ترمینال بصورت تکی یا گروهی مجوزهای(همچنین owner ها) فایل ها و فولدرهارو تغییر بدید. یکی از موضوعات بسیار مهم و امنیتی در مبحث برنامه نویسی سایت هست که باید در موردش مطالعه کنید. شما حتی ممکنه روزی یک سرور مجازی یا اختصاصی تهیه کنید که با نرم افزاری مثله putty از طریق ssh تونسته باشین به ترمینال سیستم عامل دسترسی بگیرید، اونجا نیاز به دسترسی ها و مجوزهای فایل میشه که باید دستورات chmod و chown رو در موردش باید مطالعه کنید.

مباحث امنیت آپلود فایل کمی مطالبش وقت بیشتری میبره ولی بصورت کلی برای حل این مشکل و فقط روی سیستمتون که بتونید تست بگیرید میتونید دستور پایینو بنویسید:

chmod 777 /var/www/html/mysite/upload

یا میتونید تمام فولدرها و فایل های داخل دایرکتوری mysite رو مجوز 777 بدید با دستوری پایین:

chmod -R 777 /var/www/html/mysite

در ضمن اگر فایلی رو توسط PHP ایجاد یا آپلود کردید، میتونید با دستورات خود PHP هم مجوزهاشو تغییر بدید.

در PHP تابع chmod برای این کار وجود دارد.

فایل پیوست

محسن موحد

توسط

محسن موحد

22 بهمن 99

0
حذف شده

البته این نکته هم بگم. مسیر زیر در دو کد دومی و چهارمی که بالا گذاشتم یکی هست!

مثلا این شکلی هست:

opt/lampp/temp/phpKtHI99

اما با هر بار رفرش صفحه، مقدار آخر تغییر میکنه

فایل پیوست

سیدرضا بازیار

توسط

سیدرضا بازیار

17 بهمن 99

1
حذف شده

سلام و احترام

متد move_uploaded_file ( string $from , string $to ) : bool 

یه to میگیره و from شما سعی کنید که مسیر کامل رو به to بدید ن یه مسیر نسبی 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

19 بهمن 99

0
حذف شده

مشکل اینه که هر پوشه ای ایجاد میشه read only میشه. سیستم امنیتی مک این کار رو میکنه و باید پوشه ها رو دونه دونه از این حالت در بیارم

وقتی به صورت دستی پوشه رو درست کردم مشکل حل شد

 

حالا چیکار کنم که پوشه های ایجاد شده در htdocs به صورت پیشفرض قابل نوشتن هم باشه؟ 

فایل پیوست

سیدرضا بازیار

توسط

سیدرضا بازیار

19 بهمن 99

حذف شده
با عرض پوزش به نظرم باید یه سر به community مک بزنید چون مشکل شما مربوط به سیستم عامل میشه و من از mac چیزی نمیدونم
امیر صالحی

21 بهمن 99

1
حذف شده

سلام و احترام

یه سری آموزشی هم به شما معرفی میکنم که برای مک هستش اگه دوست داشتید ببینید فکر کنم به کارتون بیاد

https://laracasts.com/series/setup-a-mac-for-development-from-scratch

فایل پیوست

امیر صالحی

توسط

امیر صالحی

22 بهمن 99