ما هو الحد بلدي PHP الموارد ؟
سؤال
أواجه مشكلة في الحصول على مزيد من الذاكرة من 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