PHP komut satırı php.ini ve ini_set ('memory_limit', ...) direktiflerini görmezden geliyor

2 Cevap domdocument

Ben ortak "Ölümcül hata: Out of memory (24 bayt ayırmaya çalıştı) (30.408.704 tahsis) ..." karşı karşıyayım PHP Ölümcül hata. Apache üzerinden hizmet Sayfalar bu davranışı sergileyen değildir.

Ben aşağıdakileri denedim:

  1. Çok daha büyük bir değere php.ini içindeki memory_limit artırılması.
  2. ini_set('memory_limit', -1), ini_set('memory_limit', '-1'), ini_set('memory_limit', 100000000), ini_set('memory_limit', '128M'), vb çağrıları aracılığıyla komut kendi içinde memory_limit artırılması
  3. unset() belleği boşaltmak için çöp toplayıcısı teşvik etmek gereksiz diziler ve nesneler ing.
  4. Web barındırma Başvurma. Onlar normalde çok yetenekli ve bilgili, ama ya bu konuda bana yardım etmek mümkün olmamıştır.
  5. Ben açıkça çeşitli değerleri ile özel php.ini dosyaları el ile seçmek için -c komut satırı bayrağını kullanarak php.ini dosyasına dahil denedim.
  6. Ben çiğ bayt sayıları ve vb 64M, 128M, gibi değerlerin her ikisini de kullanarak php.ini de memory_limit ayarı denedim
  7. Hosting sağlayıcısı hiçbir sorunları ile root olarak komut dosyasını çalıştırmak mümkün oldu, ama benim olmayan-root kullanarak çalıştırırken yapmam aynı sorunu yaşar. Belki ilgili izinleri sorunu bir tür var mı?

Ne olursa olsun ben denemek ne, hata mesajı aynıdır. Bu benim komut satırı komut memory_limit değişiklikleri görmezden anlaşılmaktadır.

Ben komut bellek verimli olduğundan emin olmak için denemek için eğilimindedir, ama ben şu vea Simple HTML DOM aracılığıyla HTML büyük miktarlarda ayrıştırmak gerek kulüpler ve ben hafıza sorunları dışında yaşıyorum çözümleyici olduğunu. Script bellek ayak izini azaltmak amacıyla, yerine DOMDocument kullanarak denedim. Bu da yardımcı olmuyor. Aslında, bellek hatası dışında artık başka komut tetiklenir.

Sorum: herkes bu veya benzer bir sorun yaşadı? Eğer herhangi bir önerileri var mı?

Teşekkür ederim.

2 Cevap

Bu sorun, tüm komut satırı komut bir sabit bellek sınır koyarak edildi sunucu üzerinde etkin olan kabuk çatal bomba koruması neden olduğu ortaya çıktı. Bu benim bilgim olmadan benim web barındırma tarafından etkin olmuştu.

cli PHP apache php için farklı bir php.ini kullanıyor olabilirsiniz. Bir phpinfo() denemek ve onun kullanarak düşünmek ini dosyasını kullanarak kontrol edin.