Configurazione di Runtime

Il comportamento di queste funzioni è influenzato dalle impostazioni di php.ini.

L'estensione zlib permette di comprimere in modo trasparente le pagine on-the-fly, se il browser supporta questa funzionalità. Quindi ci sono tre opzioni nel file di configurazione php.ini.

Opzioni di Configurazione di Zlib
Nome Default Modificabile Storico dei cambiamenti
zlib.output_compression "0" PHP_INI_ALL  
zlib.output_compression_level "-1" PHP_INI_ALL  
zlib.output_handler "" PHP_INI_ALL  
Per maggiori dettagli e definizioni sui modi PHP_INI_*, vedere Where a configuration setting may be set.

Breve descrizione dei parametri di configurazione.

zlib.output_compression bool/int

Decide se comprimere le pagine in maniera trasparente. Se questa opzione è impostata a "On" nel file php.ini o nella configurazione di Apache, le pagine vengono compresse se il browser invia un header "Accept-Encoding: gzip" o "deflate". Gli header "Content-Encoding: gzip" (oppure "deflate") e "Vary: Accept-Encoding" sono aggiunti all'output. In runtime, può essere impostato solo prima di inviare qualsiasi output.

Questa opzione accetta anche valori interi anziché booleani "On"/"Off", in questo modo è possibile impostare la dimensione del buffer (il default è 4KB).

Nota:

output_handler deve essere vuoto se quest'opzione è 'On' ! Altrimenti occorre utilizzare zlib.output_handler.

zlib.output_compression_level int

Livello di compressione utilizzato per la compressione trasparente dell'output. Specificare un valore compreso tra 0 (nessuna compressione) e 9 (massima compressione). Il valore predefinito, -1, consente al server di decidere quale livello utilizzare.

zlib.output_handler string

Non si possono specificare ulteriori handler dell'output se zlib.output_compression è attivato qui. Questa impostazione è come output_handler ma con un ordine differente.

add a note add a note

User Contributed Notes 6 notes

up
1
finlanderid at gmail dot com
7 years ago
Does anyone find these two statements contradictory? Am I not understanding something, or are these statements actually contradicting each other?

Statement ONE from output_handler:
"output_handler must be empty if this [zlib.output_compression] is set 'On' ! Instead you must use zlib.output_handler."

Statement TWO from zlib.output_handler:
"You cannot specify additional output handlers if zlib.output_compression is activated ..."

Statement ONE says you have to use zlib.output_handler, if zlib.output_compression is turned ON. Statement TWO says that, if zlib.output_compression is turned ON, you cannot use zlib.output_handler.

what the heck?
up
-6
scott at pawprint dot net
10 years ago
In the hopes this will help others - a hard to spot gotcha when implementing zlib.output_compression. if you use flush() anywhere in your script (even right at the end) the compression won't work - you need to let that happen automatically or it ends up being sent uncompressed.
up
-4
Anon
2 years ago
Because of possible BREACH attacks when using output compression cross-site scripting should be disallowed. This can be achieved with the same-site cookie attribute:

https://www.sjoerdlangkemper.nl/2016/04/14/preventing-csrf-with-samesite-cookie-attribute/

https://caniuse.com/#feat=same-site-cookie-attribute
up
-9
galaxy
7 years ago
finlanderid at gmail dot com,

you are mixing two separate things and consider them to be the same thing, hence the confusion.

There are two output_handlers:

1. http://php.net/manual/en/outcontrol.configuration.php#ini.output-handler

2. http://php.net/manual/en/zlib.configuration.php#ini.zlib.output-handler

Now, if you re-read your quotes again with this information it won't be confusing anymore :)
up
-6
pacerier+php dot net at gmail dot com
4 years ago
@finlanderid, Exactly. As output_handler and zlib.output_handler cant be both set (as per ""<output_handler must be empty if this is set 'On'>""), "different order" refers to?
up
-21
Nathan
10 years ago
Apparently, there is a bug in certain versions of PHP with setting zlib.output_compression to "On" via ini_set:

<?php
ini_set
("zlib.output_compression", "On");
?>

In some cases, it does not send the Content-type header and browsers won't know to decompress the contents before displaying. Instead, you can set it to the buffer size, which sends the correct header:

<?php
ini_set
("zlib.output_compression", 4096);
?>
To Top