2017-04-26 4 views
3

HintergrundKonvertieren Unterschrift Bild PHP

I von 5,3 bis 7 zur Zeit eine PHP-Anwendung bin ich Aktualisierung 5.6 bin Targeting mit zu beginnen.

Es gibt einen Abschnitt der App, der eine Signatur in ein Bild konvertiert. Wenn diese Datei ausgeführt wird, erhalte ich diesen Fehler.

Fehler

Fatal error: Erlaubt Speichergröße von 33554432 Bytes erschöpft (versucht 20480 Bytes zuzuteilen) in signature-to-image.php auf Linie

Dies ist die Zeile, auf die im Fehler verwiesen wird.

-Code

$img = imagecreatetruecolor($options['imageSize'][0] * $options['drawMultiplier'], $options['imageSize'][1] * $options['drawMultiplier']); 

Frage

Könnte das Problem hier jemand erklären?

Ich dachte, dies hat mit einer Serverkonfiguration und nicht eine Version von PHP-Problem zu tun. Jede Hilfe wäre willkommen.

array(5) { 
    ["imageSize"]=> 
    array(2) { 
    [0]=> 
    int(373) 
    [1]=> 
    int(95) 
    } 
    ["bgColour"]=> 
    array(3) { 
    [0]=> 
    int(255) 
    [1]=> 
    int(255) 
    [2]=> 
    int(255) 
    } 
    ["penWidth"]=> 
    int(2) 
    ["penColour"]=> 
    array(3) { 
    [0]=> 
    int(0) 
    [1]=> 
    int(0) 
    [2]=> 
    int(0) 
    } 
    ["drawMultiplier"]=> 
    int(12) 
} 
<br /> 
<b>Fatal error</b>: Allowed memory size of 33554432 bytes exhausted (tried to allocate 20480 bytes) 
+0

Meiner Erfahrung nach neueren PHP-Versionen sind in der Regel * weniger verwenden * Speicher, mehr nicht. Setzen Sie 'memory_limit' explizit oder verlassen Sie sich auf den Systemstandard? –

+1

Ein 32Mb Limit ist ziemlich klein. Ihr 5.3-Server hat wahrscheinlich eine höhere Einstellung. –

+0

Häufiger als nicht "Erlaubte Speichergröße von [BIG Nummer] erschöpft (versucht, [KLEINE Nummer] zuzuweisen)" bedeutet normalerweise, dass Sie irgendwo eine Endlosschleife haben oder einfach zu viel tun, ohne Speicher freizugeben. Erinnern Sie sich daran, 'imagedestroy' aufzurufen, um den Speicher freizugeben, nachdem Sie mit einer Bildressource fertig sind? –

Antwort

2

Es scheint, dass Ihre php Skript mehr Speicher als die auf der php.inimemory_limit Einstellung angegeben werden muss.

Sie haben 2 Möglichkeiten:

1 - Bearbeiten Sie die php.inimemory_limit Einstellung auf einen höheren Wert und apache neu starten.

2 - folgendes Skript hinzufügen:

ini_set('memory_limit', '128M') # try several values until you find the appropriate one, no more no less. 
+0

Ja, ich schätze Sie. Aber der Punkt zu diesem war, dass, wenn es ein Problem mit der Größe gibt, ich nicht nur das Größenlimit vergrößern und das Problem ignorieren werde. Ich weiß, dass ich das Speicherlimit heraufsetzen kann, aber ist das eine abnorme Größe für eine Signatur? Ich mache mir Sorgen, weil ich auf eine neue Version von PHP migriere, und ich denke, es sollte nicht so hoch sein. – wuno

+0

Sicher, achten Sie auf @ niet-the-dark-absol Kommentar. –

+0

@wuno Haben Sie versucht, den Speicher auf, sagen wir, 64M zu erhöhen? wenn ja, funktioniert es? –