Ne benim PHP kaynaklarını sınırlayıcı oluyor?

3 Cevap php

Ben PHP üzerinden daha fazla bellek almak bir sorun yaşıyorum.

Bu hata iletisi:

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

Yine:

Ben 32M php.ini dosyasında memory_limit kurdum:

memory_limit = 32M;

Ben de gerçek script elle geçersiz kılmak için denedim:

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

- Ve ben kayboldum nerede burada - Ben bu php.ini dosyası kullanılan gerçek ini dosyası olduğunu ve memory_limit doğru ayarlanmış gibi görünüyor phpinfo () ile teyit ettik. Memory_limit üzerinde çizgi verir:

memory_limit    32M	32M

Bu yüzden her şey düzgün yapılandırılmış olduğunu görünüyor, ama ben sadece 20971520 byte (~ 20M) alıyorum.

Başka nerede bu sınırlama empoze ediliyor nerede anlamaya isteyen olmalıdır?

EDIT: Ben bir VPS Ubuntu 9,04, nginx / fastcgi altında php koşuyorum. Php-cgi süreçleri biraz kaynak-aç (RES = 25m, VIRT = 187m) gibi görünüyor, ama ben fiziksel serbest bellek ve serbest takas alanı 500m 10m var.

3 Cevap

Ben sadece koşuyordu kod üzerinde gözenekli ve birisi bir yapılandırma dosyasına bu kodlanmış vardı:

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

Ben yapıyordum herşeyi basan hangisiydi. Yaşasın.

Benim ilk içgüdüsü PHP farklı bir php.ini okuduğunu tahmin etmektir.

Debian (ve büyük olasılıkla Ubuntu) olarak, PHP (CLI, CGI, ve apache) her sürümü php.ini kendi kopyasını vardır.

Sen. Htaccess dosyasında ayarı deneyebilirsiniz, i tek bir sunucu üzerinde çalışan bir site almak için yapmak zorunda budur.

Burada ben kullanılan ayarlar şunlardır:

php_value  upload_max_filesize  50M
php_value  post_max_size  60M
php_value  memory_limit  128M