[PHP] Fatal Error?

deniz

Well-known member
25 März 2008
320
27
Guten Morgen die Leute :)

Ich habe mir das ImageSpread gekauft und es auf meinem Server installiert. Nun funktioniert soweit alles ganz gut.

Nur wenn ich ein größeres Bild hochladen möchte, erscheint folgender Fehler:
PHP:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 6528 bytes) in /srv/www/htdocs/web63/html/inc/function.php on line 46

Was möchte mir diese Fehlermeldung denn sagen und wie kann ich sie ausbessern? Das Bild ist knapp 877 KB groß und erlaubt sind über 3 MB.

Vielen Dank schonmal für alle Hilfestellungen!
 
Das ist das Speicherlimit von PHP. Das Script kann maximal 8MB Arbeitsspeicher nutzen danach ist ende. Und 8MB sind nicht viel wenn man mit Bildern arbeitet. Sobald du ein Jpg Bild mit der gdlib lädst werden aus deinen 700KB ganz schnell mehrere MB. Bei 8MB sollten die Bilder nicht viel größer als 2Megapixel sein (das sind was um die 1600x1200). Ein paar Pixel mehr gehen zwar noch, aber nicht mehr viel. PI mal Daumen kannste das auch einfach selbst ausrechnen: Megapixel * 3 = Megabyte.

Erklär mal was das Script macht? Es gibt da auch Experten die laden das Bild mit der gdlib um die Auflösung auszulesen.
 
Achso, Speicherlimit. Wieder mal ein wenig schlauer geworden :)

Das Script läd Bilder auf den Server, erstellt dabei Thumbnail's und verschiedene Codes zum anzeigen in Foren etc.
 
Zuletzt bearbeitet:
Ist es möglich das Speicherlimit zu erweitern/vergrößern?

Wenn ja welche Mittel benöte ich, bzw. wie muss ich vorgehen?
 
Hoster meint, ich könne "Direktiven" eigenständig aktivieren, bzw. deaktivieren.

Ich soll mir doch mal das Confixx Handbuch durchlesen, doch dort konnte ich leider nichts dazu finden.

Hat jemand ein Tipp für mich?
 
PHP:
ini_set('memory_limit', '50M');
im Script (funktioniert laut Kommentaren im Manual ab v5.2.2) machen.

Mit einer .htaccess geht es auch; da weiß ich aber die Syntax ned, um PHP-Optionen zu stellen. Hier halt kurz googlen.

Sonst die php.ini bearbeiten und dort die Einstellung für memory_limit ändern.
 
Nun habe ich oer httpd-Spezial folgendes geändert:

PHP memory limit: 32 MB
PHP upload max filesize: 16 MB

Das sind jeweils die höchsten Werte die ich einstellen kann. Trotzdem kommt folgende Fehlermeldung:

PHP:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 12288 bytes) in /srv/www/htdocs/web63/html/inc/function.php on line 46

Scheint es so als hätte der Server nicht genug Leistung oder wie darf ich das verstehen?
 
Durch httpd-Spezial geht es leider nicht, da geht maxmimal 32MB.

Ich google mal nach einer anderen Möglichkeit, vllt. finde ich was.

Es klappt ja nichtmal ein 2.04 MB kleines Bild hoch zu laden, bei der 32MB Einstellung...
 
Zuletzt bearbeitet:
Versuchs mal in dem Script mit

PHP:
set_memory_limit('64MB');

Am besten irgendwo einbinden wo es immer ausgeführt wird.
 
Versuchs mal in dem Script mit

PHP:
set_memory_limit('64MB');

Am besten irgendwo einbinden wo es immer ausgeführt wird.

Da kommt leider folgender Fehler:

PHP:
Fatal error: Call to undefined function set_memory_limit() in /srv/www/htdocs/web63/html/config.php on line 4
 
PHP:
$mem_limit = ini_get('memory_limit');

if($mem_limit){
	ini_alter('memory_limit', '64M');
} else {
	ini_set('memory_limit', '64M');
}

Kommt natürlich darauf an, ob du wirklich über ausreichende Rechte verfügst, die php.ini zur Laufzeit zu verändern, bzw. ob die dafür notwendigen Funktionen auf dem Server verwendet werden dürfen.
 
PHP:
$mem_limit = ini_get('memory_limit');

if($mem_limit){
	ini_alter('memory_limit', '64M');
} else {
	ini_set('memory_limit', '64M');
}

Kommt natürlich darauf an, ob du wirklich über ausreichende Rechte verfügst, die php.ini zur Laufzeit zu verändern, bzw. ob die dafür notwendigen Funktionen auf dem Server verwendet werden dürfen.

Ahhh wunderbar! Es funktioniert! Vielen lieben Dank der Herr! :roll:

:):):)