تغيير الحد الأقصى لحجم الملف المرفوع في PHP: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: "الملف كبير جداً" — هل هذا الألم مألوف لك؟

\n\n

هل سبق لك أن حاولت رفع صورة عالية الدقة، أو فيديو لمدونتك، أو ملف ZIP يحتوي على مستندات إلى موقعك، وفجأة ظهرت لك رسالة الخطأ القاسية: "تم تجاوز الحد الأقصى لحجم الملف المرفوع"؟ إذا كان الأمر كذلك، فأنت لست وحدك. على موقع Stack Overflow، حصد سؤال "تغيير الحد الأقصى لحجم الملف المرفوع" عشرات الآلاف من المشاهدات، مما يعني أن مئات الآلاف من المطورين (من المبتدئين إلى المحترفين) واجهوا هذه المشكلة.

\n\n

في منصة PythonLib التعليمية، لا نعلمك فقط نسخ الكود، بل نفهمك كيف يعمل كل شيء من الداخل. اليوم، وبأسلوب مبسط مع أمثلة عملية، سنشرح بالتفصيل كيفية تغيير حد رفع الملفات في PHP. ستتعرف على أماكن الإعدادات، ولماذا لا تعمل أحياناً، وكيف تتجنب الأخطاء الشائعة. هيا بنا!

\n\n

لماذا لا يسمح PHP برفع الملفات الكبيرة؟

\n\n

بشكل افتراضي، PHP متواضع جداً في هذا الشأن. فهو يسمح برفع ملفات بحجم 2 ميغابايت فقط (وفي بعض الإصدارات القديمة أقل من ذلك). تم وضع هذا الحد لأسباب أمنية: تخيل أن مخترقاً يحاول رفع ملف ضخم بحجم غيغابايت إلى خادمك مما قد يتسبب في تعطيل الموقع. لكن بالنسبة للمهام المشروعة (مثل رفع ملفات السيرة الذاتية أو فيديوهات الدروس)، هذا الحد صغير جداً.

\n\n

من أين يأتي هذا الحد؟ الإجابة تكمن في ثلاثة توجيهات رئيسية في إعدادات PHP:

\n\n
    \n
  • upload_max_filesize — الحد الأقصى لحجم الملف الواحد الذي يمكن رفعه.
  • \n
  • post_max_size — الحد الأقصى لحجم جميع البيانات المرسلة عبر طريقة POST (بما في ذلك الملفات وحقول النموذج النصية).
  • \n
  • max_execution_time — الوقت الذي يمكن لـ PHP إنفاقه لتنفيذ السكريبت (رفع ملف كبير قد يستغرق دقائق).
  • \n
\n\n

إذا قمت بزيادة upload_max_filesize فقط ولكن نسيت post_max_size، فستفشل عملية الرفع وسيظهر خطأ. هذا يشبه محاولة وضع فيل في صندوق سيارة بينما الصندوق أصغر من الفيل نفسه. أو عندما يكون لديك صندوق كبير (الملف)، لكن فتحة صندوق البريد (post_max_size) ضيقة جداً.

\n\n

أين توجد إعدادات PHP؟ ثلاث طرق للنجاح

\n\n

لديك ثلاث طرق لتغيير الحد الأقصى لحجم الملف المرفوع. أي طريقة تختار تعتمد على نوع الاستضافة ومستوى الصلاحيات لديك. دعنا نشرح كل طريقة.

\n\n

الطريقة 1: تعديل ملف php.ini (الطريقة الذهبية)

\n\n

ملف php.ini هو "لوحة التحكم" الرئيسية لـ PHP. إذا كان لديك صلاحية الوصول إلى الخادم (سيرفر خاص VPS، أو سيرفر مخصص، أو جهازك المحلي)، فهذه هي الطريقة الأكثر موثوقية.

\n\n

ابحث عن ملف php.ini. عادةً ما يكون موجوداً في:

\n
    \n
  • لينكس: /etc/php/8.x/apache2/php.ini أو /etc/php/8.x/cli/php.ini
  • \n
  • ويندوز: C:\\xampp\\php\\php.ini (لـ XAMPP) أو C:\\wamp64\\bin\\php\\php8.x\\php.ini
  • \n
\n\n

افتح الملف وابحث عن (أو أضف) الأسطر التالية:

\n\n
; الحد الأقصى لحجم الملف الواحد (الآن 50 ميجابايت)\nupload_max_filesize = 50M\n\n; الحد الأقصى لحجم جميع بيانات POST (يجب أن يكون أكبر من أو يساوي upload_max_filesize)\npost_max_size = 64M\n\n; أقصى وقت لتنفيذ السكريبت بالثواني (للملفات الكبيرة، قم بزيادته إلى 300)\nmax_execution_time = 300\n\n; أقصى وقت لاستقبال البيانات (يوصى بجعله 5 دقائق على الأقل)\nmax_input_time = 300\n\n; الذاكرة المخصصة لكل سكريبت (إذا كان الملف كبيراً، قم بزيادتها إلى 128M أو 256M)\nmemory_limit = 128M
\n\n

بعد إجراء التعديلات، تأكد من إعادة تشغيل خادم الويب:

\n
sudo systemctl restart apache2   # لأباتشي\nsudo systemctl restart nginx     # لـ Nginx
\n\n

أصبح جاهزاً! الآن يمكن لموقعك استقبال ملفات يصل حجمها إلى 50 ميجابايت. لكن تذكر: يجب أن يكون post_max_size أكبر بعدة ميجابايت من upload_max_filesize، لإتاحة مساحة كافية لترويسات النموذج الإضافية.

\n\n

الطريقة 2: سحر ملف .htaccess (للاستضافات المشتركة)

المدونات

توصيات الكتب