سؤال

أواجه مشكلة في الحصول على مزيد من الذاكرة من PHP.

هذه هي رسالة الخطأ:

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...

بعد:

لقد حدد memory_limit في php.ini 32M:

memory_limit = 32M;

أنا أيضا حاولت تجاوز ذلك يدويا في الفعلية النصي:

ini_set('memory_limit', '32M');

و هنا حيث أنا فقدت ... لقد أكدت عبر phpinfo() أن هذه php.ini الفعلية ini تستخدم ، memory_limit يبدو أن تعيين بشكل صحيح.خط على memory_limit يعطي هذا:

memory_limit    32M 32M

لذلك يبدو أن كل شيء قد تم تكوينه بشكل صحيح, ولكن أنا فقط الحصول على 20971520 بايت (~20M).

أين يجب أن تبحث لمعرفة أين هذا القيد يتم المفروضة ؟

تحرير: أنا تشغيل php تحت nginx/fastcgi على أوبونتو 9.04 في VPS.Php-cgi العمليات على ما يبدو أن يكون قليلا المتعطشة للموارد (RES=25m ، VIRT=187م) ، ولكن لدي 10m من الذاكرة الفعلية مجانا و 500 متر من مساحة المبادلة مجانا.

هل كانت مفيدة؟

المحلول 2

أنا فقط وتمعنا الكود كان شغال و شخص كان الثابت تلوينها هذا في ملف التكوين:

ini_set('memory_limit', '20M');

الذي تجاوز كل شيء كنت أفعله.يا للعجب.

نصائح أخرى

غريزتي أعتقد أن PHP هي قراءة مختلفة php.ini.

في ديبيان (وعلى الأرجح أوبونتو), كل إصدار من PHP (cli, cgi, و apache) لديها نسخة من php.ini.

قد تتمكن من محاولة وضع في .ملف htaccess, هذا ما كان يجب القيام به للحصول على موقع يعمل على ملقم واحد.

هنا هي الإعدادات التي استخدمتها:

php_value  upload_max_filesize  50M
php_value  post_max_size  60M
php_value  memory_limit  128M
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top