PHP 8.3.4 Released!

Descrizione dei parametri core di php.ini

Questo elenco contiene i parametri 'core' del php.ini che sono utilizzati per configurare il PHP. Le impostazioni gestite dai vari moduli sono elencate e dettagliate nelle pagine di documentazione dei rispettivi moduli; informazioni sui parametri per le sessioni, ad esempio, possono essere troavte nelle pagine delle sessioni.

Nota:

I valori di default elencati qui sono usati quando php.ini non è caricato; i valori di php.ini per la produzione e lo sviluppo possono variare.

Parametri del linguaggio

Parametri del linguaggio e configurazioni varie
Nome Default Modificabile Storico dei cambiamenti
short_open_tag "1" INI_PERDIR  
precision "14" INI_ALL  
serialize_precision "-1" INI_ALL Prima di PHP 7.1.0, il valore predefinito era 17.
disable_functions "" Solo INI_SYSTEM  
disable_classes "" Solo php.ini  
exit_on_timeout "" INI_ALL  
expose_php "1" solo php.ini  
hard_timeout "2" INI_SYSTEM Disponibile da PHP 7.1.0.
zend.exception_ignore_args "0" INI_ALL Disponibile da PHP 7.4.0
zend.multibyte "0" INI_ALL  
zend.script_encoding NULL INI_ALL  
zend.detect_unicode NULL INI_ALL  
zend.signal_check "0" INI_SYSTEM  
zend.assertions "1" INI_ALL con restrizioni  

Breve descrizione dei parametri di configurazione.

short_open_tag bool

Indica se abilitare o meno la forma abbreviata dei tag di apertura del PHP (<? ?>). Se si desidera utilizzare il PHP in combinazione con l'XML, occorre disabilitare questa opzione per poter utilizzare <?xml ?>. In alternativa si può stampare il testo con il PHP, ad esempio: <?php echo '<?xml version="1.0"?>'; ?>. Inoltre, se disabilitato, occorre utilizzare la versione lunga dei tag di apertura del PHP (<?php ?>).

Nota:

Questa direttiva non influisce sulla scorciatoia <?=, che è sempre disponibile.

precision int
Il numero di cifre significative usato nella visualizzazione dei numeri in virgola mobile. -1 indica che verrà utilizzato un algoritmo migliorato per arrotondare tali numeri.
serialize_precision int
Il numero di cifre significative salvato nella serializzazione dei numeri in virgola mobile. -1 indica che verrà utilizzato un algoritmo migliorato per arrotondare tali numeri.
expose_php bool

Indica se il PHP deve indicare il fatto che è installato su un server, il che include la versione di PHP all'interno delle intestazioni HTTP (es. X-Powered-By: PHP/5.3.7).

disable_functions string

Questa direttiva permette di disabilitare alcune funzioni. Riceve una lista di nomi di funzione separati da virgole.

Solo le funzioni interne possono essere disattivate usando questa direttiva. Le funzioni definite dall'utente non sono interessate.

Questa direttiva deve essere impostata in php.ini pertanto non può essere usata in httpd.conf.

disable_classes string
Questa direttiva permette di disabilitare alcune classi. Riceve una lista di nomi di classi separati da virgole. Questa direttiva deve essere impostata in php.ini pertanto non può essere usata in httpd.conf.
zend.assertions int
Quando impostato a 1, il codice di asserzione sarà generato ed eseguito (modalità di sviluppo). Quando impostato a 0, il codice di asserzione sarà generato ma sarà saltato (non eseguito) in fase di esecuzione. Quando impostato a -1, il codice di asserzione non sarà generato, rendendo le asserzioni a costo zero (modalità di produzione).

Nota:

Se viene avviato un processo in modalità di produzione, zend.assertions non può essere cambiato in fase di runtime, poichè il codice per le asserzioni non è stato generato.

Se viene avviato un processo in modalità di sviluppo, zend.assertions non può essere impostato a -1 in fase di runtime.

hard_timeout int

zend.exception_ignore_args bool

Esclude gli argomenti dallo stack trace generati dalle eccezioni.

zend.multibyte bool

Abilita l'analisi dei file sorgente con codifica multibyte. Quando si abilita zend.multibyte è richiesto utilizzare codifiche di caratteri come SJIS, BIG5, ecc che contengono caratteri speciali in dati di stringhe multibyte. Codifiche compatibili con ISO-8859-1 come UTF-8, EUC, ecc non richiedono questa opzione.

L'abilitazione di zend.multibyte richiede che l'estensione mbstring sia disponibile.

zend.script_encoding string

Questo valore verrà utilizzato a meno che non sia presente una direttiva declare(encoding=...) all'inizio dello script. Quando viene usata una codifica incompatibile con ISO-8859-1, devono essere usati sia zend.multibyte che zend.script_encoding.

Le stringhe letterali verrano traslitterate da zend.script_enconding a mbstring.internal_encoding, come se fosse stata chiamata mb_convert_encoding().

zend.detect_unicode bool

Conrolla il BOM (Byte Order Mark) e vede se il file contiene caratteri multibyte validi. Questo rilevamento viene eseguito prima dell'esecuzione di __halt_compiler(). Disponibile solo in modalità Zend Multibyte.

zend.signal_check bool

Controlla prima dello shutdown gli handler dei segnali che sono stati sostituiti.

exit_on_timeout bool

Questa è una direttiva Apache1 mod_php-only che termina forzatamente un processo figlio di Apache in caso di ub timeout di esecuzione di PHP. Questo timeout provoca una chiamata interna longjmp() Apache1 che può lasciare alcune estensioni in uno stato inconsistente. Terminando il processo qualsiasi lock sulla memoria verrà rimosso.

Limiti per le risorse

Limiti per le risorse
Nome Default Modificabile Storico dei cambiamenti
memory_limit "128M" INI_ALL  

Breve descrizione dei parametri di configurazione.

memory_limit int

Questo parametro imposta la dimensione massima in byte di memoria occupabile dallo script. Questo aiuta a impedire che script scritti male utilizzino tutta la memoria del server. Si noti che per non avere limitazioni di memoria si deve impostare questo parametro a -1.

Quando un integer è usato, il valore è misurato in byte. Si può anche usare una notazione abbreviata come descritto in questa FAQ.

Vedi anche: max_execution_time.

Regolazione della Performance

Regolazione della Performance
Nome Default Modificabile Storico dei cambiamenti
realpath_cache_size "4M" INI_SYSTEM Prima di PHP 7.0.16 e 7.1.2, il valore di default era "16K"
realpath_cache_ttl "120" INI_SYSTEM  

Nota:

L'uso di open_basedir disabiliterà la cache di realpath.

Breve descrizione dei parametri di configurazione.

realpath_cache_size int

Determina la dimensione della cache di realpath usata da PHP. Questo valore dovrebbe essere aumentato nei sistemi in cui PHP apre molti file, in modo da rispecchiare la quantità di operazioni su file eseguite.

La dimensione rappresenta il numero totale di byte nelle stringhe di percorso memorizzate, più la dimensione dei dati associati con la voce della cache. Questo significa che al fine di memorizzare percorsi più lunghi nella cache, la dimensione della cache deve essere più grande. Questo valore non controlla direttamente il numero di percorsi distinti che possono essere salvati nella cache.

La dimensione richiesta per i dati delle voci della cache è dipendente dal sistema.

realpath_cache_ttl int

Durata temporale (in secondi) della validità della cache realpath per un dato file o cartella. Per sistemi con file che cambiano raramente valutare la possibilità di aumentare il valore.

Gestione dei dati

Parametri di configurazione per la gestione dei dati
Nome Default Modificabile Storico dei cambiamenti
arg_separator.output "&" INI_ALL  
arg_separator.input "&" INI_PERDIR  
variables_order "EGPCS" INI_PERDIR  
request_order "" INI_PERDIR  
auto_globals_jit "1" INI_PERDIR  
register_argc_argv "1" INI_PERDIR  
enable_post_data_reading "1" INI_PERDIR Disponibile da PHP 5.4.0
post_max_size "8M" INI_PERDIR  
auto_prepend_file NULL INI_PERDIR  
auto_append_file NULL INI_PERDIR  
default_mimetype "text/html" INI_ALL  
default_charset "UTF-8" INI_ALL  
input_encoding "" INI_ALL  
output_encoding "" INI_ALL  
internal_encoding "" INI_ALL  

Breve descrizione dei parametri di configurazione.

arg_separator.output string

Il separatore degli argomenti utilizzato nelle URL genarate da PHP.

arg_separator.input string

Lista dei separatori utilizzati da PHP per la siddivisione dell'URL di input nelle veriabili.

Nota:

Qualsiasi carattere inserito in questo parametro sarà considerato un separatore!

variables_order string

Imposta l'ordine di parsing delle variabili EGPCS (Environment, Get, Post, Cookie e Server). Ad esempio, se variables_order è impostato a "SP" il PHP creerà il superglobals $_SERVER e $_POST, ma non creerà $_ENV, $_GET e $_COOKIE. L'impostazione "" significa che non verranno impostati $link.superglobals;.

Avviso

In entrambe le SAPI CGI e FastCGI, $_SERVER è popolato anche dai valori dell'environment; S è sempre equivalente a ES a prescindere dalla posizione di E nella direttiva.

Nota:

Anche il contenuto ed ordine di $_REQUEST è modificato da questa direttiva.

request_order string

Descrive l'ordine in cui PHP registra le variabili GET, POST e Cookie variables nell'array _REQUEST. La registrazione è fatta da sinistra a destra, i nuovi valori sostituiscono quelli vecchi.

Se questa direttiva non è impostata, variables_order è utilizzata per i contenuti di $_REQUEST.

Si noti che il file php.ini della distribuzione di default non contiene il 'C' per i cookie, per questioni di sicurezza.

auto_globals_jit bool

Quando abilitato, le variabili SERVER, REQUEST ed ENV sono create al momento del primo utilizzo (Just In Time) invece che all'avvio dello script. Se queste variabili non sono utilizzate dallo script, impostanto questo parametro ad on si ha un beneficio in termini di performance.

Avviso

L'utilizzo delle variabili SERVER, REQUEST e ENV è impostato al momento della compilazione. Quindi usarle attraverso, per esempio, variabili dinamiche non porterà alla loro inizializzazione.

register_argc_argv bool
Indica al PHP se dichiarare le variabili argv & argc (che contengono le informazioni GET). Vedere anche command line.
enable_post_data_reading bool
Disabilitando questa opzione le variabili $_POST e $_FILES non sono popolate. L'unico modo per leggere i postdata è quindi quello di usare il wrapper dello stream php://input. Questa soluzione può essere utile nelle richieste via proxy o per processare i dati POST in una maniera più efficiente per la memoria.
post_max_size int
Imposta la dimensione massima dei dati post. Questa impostazione influenza anche gli upload dei file. Per permettere upload di file di grandi dimensioni, il valore impostato deve essere maggiore di upload_max_filesize. In termini generali memory_limit dovrebbe essere maggiore di post_max_size. Quando un integer è usato, il valore è misurato in byte. Si può anche usare una notazione abbreviata come descritto in questa FAQ. Se la dimensione dei dati post è maggiore di post_max_size, le variabili superglobale $_POST e $_FILES sono vuote. Questo può essere rilevato in diversi modi, ad esempio passando una variabile $_GET allo script che processa i dati, tipo <form action="edit.php?processed=1">, e verificare se $_GET['processed'] è impostata.

Nota:

PHP permette di usare le abbreviazioni per i valori byte, tra cui K (kilo), M (mega) e G (giga). PHP fa una conversione automatica quando si usano queste abbreviazioni. Si presti attenzione a non eccedere il limite dell'intero signed 32 bit (se si sta usando una versione a 32 bit) poiché questo farà fallire lo script.

Changelog per post_max_size
Versione Descrizione
5.3.4 post_max_size = 0 non disabiliterà il limite quando il tipo di contenuto è application/x-www-form-urlencoded o non è registrato con PHP.
5.3.2 , 5.2.12 Permette una dimensione post illimitata impostando post_max_size a 0.

auto_prepend_file string

Indica il nome del file che deve essere parsato prima del file principale. Questo file viene incluso come se fosse chiamato dalla funzione include, pertanto si utilizza il parametro include_path.

Il valore speciale none disabilita la funzione.

auto_append_file string

Specifica il file che deve essere analizzato in automatico dopo il file principale. Il file è incluso come se fosse chiamato dalla funzione include pertanto si utilizza il parametro include_path.

Il valore none disabilita l'auto-appending.

Nota: Se lo script termina con exit(), l'auto-accodamento non viene eseguito.

default_mimetype string

Per impostazione predefinita, PHP stamperà un media type usando l'header Content-Type. Per disabilitare questo comportamento, semplicemente settarlo a vuoto.

Il media type predefinito di PHP è text/html.

default_charset string

"UTF-8" è il valore di default e il suo valore è usato come codifica di caratteri predefinita per htmlentities(), html_entity_decode() e htmlspecialchars() se il parametro encoding è omesso. Il valore di default_charset sarà anche usato per impostare il carattere predefinito per le funzioni iconv se le opzioni di configurazione iconv.input_encoding, iconv.output_encoding and iconv.internal_encoding non sono settate, e per le funzioni mbstring se le opzioni di configurazione mbstring.http_input mbstring.http_output mbstring.internal_encoding non sono settate.

Tutte le versioni di PHP useranno questo valore come codifica di caratteri all'interno dell'header di default Content-Type inviato da PHP se l'header non è sovrascritto da una chiamata a header().

Impostare default_charset ad una stringa vuota non è raccomandato.

input_encoding string

Questa impostazione è usata per moduli multibyte come mbstring e iconv. Il valore predefinito è vuoto.

output_encoding string

Questa impostazione è usata per moduli multibyte come mbstring e iconv. Il valore predefinito è vuoto.

internal_encoding string

Questa impostazione è usata per moduli multibyte come mbstring e iconv. Il valore predefinito è vuoto. Se vuoto, viene usato default_charset.

Vedere anche: magic_quotes_gpc, magic_quotes_runtime e magic_quotes_sybase.

Percorsi e Directory

Parametri di configurazione per percorsi e directory
Nome Default Modificabile Cronologia
include_path ".;/path/to/php/pear" INI_ALL  
open_basedir NULL INI_ALL  
doc_root NULL INI_SYSTEM  
user_dir NULL INI_SYSTEM  
user_ini.cache_ttl "300" INI_SYSTEM  
user_ini.filename ".user.ini" INI_SYSTEM  
extension_dir "/path/to/php" INI_SYSTEM  
extension NULL php.ini only  
zend_extension NULL Solo php.ini  
cgi.check_shebang_line "1" INI_SYSTEM  
cgi.discard_path "0" INI_SYSTEM  
cgi.fix_pathinfo "1" INI_SYSTEM  
cgi.force_redirect "1" INI_SYSTEM  
cgi.nph "0" INI_SYSTEM  
cgi.redirect_status_env NULL INI_SYSTEM  
cgi.rfc2616_headers "0" INI_ALL  
fastcgi.impersonate "0" INI_SYSTEM  
fastcgi.logging "1" INI_SYSTEM  

Breve descrizione dei parametri di configurazione.

include_path string

Elenco di directory in cui le funzioni require, include, fopen(), file(), readfile() e file_get_contents() cercheranno i file. Il formato è tipo la variabile d'ambiente PATH: una lista di directory separate da due punti in Unix, punto e virgola in Windows.

PHP considera separatamente ogni voce nel percorso d'inclusione, quanto cerca il file da includere. Cerca nel primo percorso, e se non lo trova, cerca nel successivo, finché non trova il file da includere o restituisce un E_WARNING oppure un E_ERROR. È possibile impostare o modificare il percorso di inclusione a runtime, usando set_include_path().

Example #1 Unix include_path

include_path=".:/php/includes"

Example #2 Windows include_path

include_path=".;c:\php\includes"

L'uso di . nel percorso di include indica, negli include relativi, la directory corrente. È più efficiente usare esplicitamente include './file' piuttosto che lasciare che PHP controlli nella direcory correente ad ogni inclusione.

Nota:

Le variabili ENV sono accessibili anche nei file .ini. Di conseguenza è possibile fare riferimento alla cartella home utilizzando ${LOGIN} e ${USER}.

Le variabili d'ambiente possono variare tra le Server API, dal momento che questi ambienti possono essere differenti.

Example #3 include_path su Unix utilizzando la variabile d'ambiente ${USER}

include_path = ".:${USER}/pear/php"

open_basedir string

Limita i file che possono essere acceduti da PHP ad uno specifico albero di cartelle, contenenti il file stesso. Questo parametro NON È modificato dallo stato del Safe Mode (On o Off).

Quando uno script tenta di accedere al filesystem, per esempio, include, or fopen(), la posizione del file viene controllata. Se il file è fuori dall'albero specificato, PHP si rifiuterà di accederci. Tutti i link simbolici sono risolti, quindi non è possibile eludere questa restrizione con un symlink. Se il file non esiste il symlink non può essere risolto e il nome del file è confrontato con (uno risolto) open_basedir.

open_basedir può colpire più delle funzioni di filesystem; per esempio se MySQL è configurato per usare i driver mysqlnd, LOAD DATA INFILE sarà influenzato da open_basedir. Gran parte delle funzionalità estese di PHP usa open_basedir in questo modo.

Il valore speciale . indica che l'attuale cartella di lavoro dello script sarà usata come base-directory. Quest è comunque abbastanza pericoloso in quanto la cartella di lavoro dello script può essere cambiata facilmente con chdir().

In httpd.conf, open_basedir può essere disattivato (ad esempio per alcuni host virtuali) nello stesso modo che gli altri parametri di configurazione con "php_admin_value open_basedir none".

Nei sistemi Windows, separare le cartelle con un punto e virgola. In tutti gli altri sistemi, separare le cartelle con un due punti. Come modulo di Apache, i percorsi open_basedir dalle cartelle parenti sono ora automaticamente ereditati.

La restrizione specificata con open_basedir è un nome di cartella, non un prefisso.

L'impostazione di default è quella di permettere l'apertura di tutti i file.

Nota:

open_basedir può essere ristretto a run-time. Ciò significa che se open_basedir è impostato a /www/ in php.ini uno script può ulteriormente restringere la configurazione a /www/tmp/ a run-time con ini_set(). Quando si elencano più cartelle, si può usare la costante PATH_SEPARATOR come separatore indipendentemente dal sistema operativo.

Nota:

L'uso di open_basedir imposterà realpath_cache_size a 0 e quindi disabiliterà la cache di realpath.

doc_root string

La directory radice (root directory) del PHP sul server. Utilizzata solo se compilata. Se il PHP non è compilato con il parametro FORCE_REDIRECT, si dovrebbe impostare doc_root se si utilizza il PHP come CGI in qualsiasi web server (oltre che IIS). In alternativa utilizzare il seguente parametro cgi.force_redirect.

user_ini.cache_ttl int

user_ini.filename string

user_dir string

Il nome di base della directory utilizzata come home directory degli utenti per i file PHP, ad esempio public_html .

extension_dir string

Directory in cui il PHP cerca i moduli caricabili dinamicamente. Vedere anche: enable_dl, e dl().

extension string

Quale modulo dinamico caricare quando il PHP viene avviato.

zend_extension string

Nome dell'estensione Zend caricabile dinamicamente (per esempio XDebug) da caricare all'avvio di PHP.

cgi.check_shebang_line bool

Controlla se il PHP CGI ricerca i caratteri #! (shebang) all'inizio della prima riga dello script. Questa riga potrebbe essere necessaria se lo script deve essere eseguito sia come stand-alone che attraverso il PHP CGI. PHP in CGI salta questa linea e ignora il suo contenuto se questo parametro è attivo.

cgi.discard_path bool

Se questo è abilitato, il binario CGI di PHP può tranquillamente essere collocato al di fuori dell'albero web e le persone non saranno in grado di aggirare la sicurezza di .htaccess.

cgi.fix_pathinfo bool

Fornisce il reale supporto PATH_INFO/ PATH_TRANSLATED per il CGI. Il precedente comportamento del PHP era di impostare PATH_TRANSLATED a SCRIPT_FILENAME, non curarsi di quale fosse PATH_INFO. Per maggiori dettagli su PATH_INFO, vedere le specifiche CGI. Impostando il parametro a 1, si forza il PHP CGI a correggere il percorso in modo conforme alle specifiche. Impostando il parametro a 0 si forza il PHP a comportarsi nel modo originario. Questa opzione è attiva di default. Si consiglia di correggere gli script affinchè utilizzino SCRIPT_FILENAME piuttosto che PATH_TRANSLATED.

cgi.force_redirect bool

cgi.force_redirect è necessario per garantire maggiore sicurezza al PHP eseguito come CGI nella maggior parte dei server web. Non impostando il parametro, il PHP lo imposta a on per default. Può essere impostato ad off a proprio rischio.

Nota:

Nota per gli utenti di Windows: quando si usa IIS questa opzione deve essere disattivata. La stessa indicazione vale per OmniHTTPD o Xitami.

cgi.nph bool

Se cgi.nph è abilitato, esso forzerà cgi ad inviare sempre Status: 200 per ogni richiesta.

cgi.redirect_status_env string

Se cgi.force_redirect è impostato ad on, e non si utilizza i web server Apache o Netscape (iPlanet), può essere necessario impostare il nome di una variabile di ambiente the il PHP verificherà per sapere se può continuare l'esecuzione.

Nota:

L'impostazione di questa variabile può portare a problemi di sicurezza, fare attenzione a quello che si fa.

cgi.rfc2616_headers int

Indica al PHP quale tipo di intestazione utilizzare quando si inviano risposte HTTP. Se impostato a 0, il PHP invia un'intestazione » RFC 3875 "Status:", che è supportata da Apache ed altri server web. Quando il parametro è impostato a 1, il PHP invia una intestazione conforme alle specifiche indicate in » RFC 2616 .

Se questa opzione è abilitata, e si sta eseguendo PHP in un ambiente CGI (es. PHP-FPM) non si devono utilizzare le intestazioni HTTP di risposta standard RFC 2616, si devono piuttosto utilizzare gli equivalenti RFC 3875, per esempio invece di header("HTTP/1.0 404 Not found"); si deve usare header("Status: 404 Not Found");

Lasciare il parametro a 0 a meno che non si sappia cosa si sta facendo.

fastcgi.impersonate string

FastCGI con IIS (su OS basati su WINNT) offre la possibilità di attivare il contesto di sicurezza del client chiamante. Questo permette a IIS di definire un contesto di sicurezza in cui fare girare la richiesta. Attualmente mod_fastcgi di Apache non supporta questa caratteristica (17/03/2002). Impostare a 1 se si utilizza IIS. Il default è zero.

fastcgi.logging bool

Abilita il logging di SAPI qundo si usa FastCGI. È abilitato di default.

File Uploads

File Uploads Configuration Options
Nome Default Modificabile Storico dei cambiamenti
file_uploads "1" INI_SYSTEM  
upload_tmp_dir NULL INI_SYSTEM  
max_input_nesting_level 64 INI_PERDIR  
max_input_vars 1000 INI_PERDIR  
upload_max_filesize "2M" INI_PERDIR  
max_file_uploads 20 INI_SYSTEM  

Breve descrizione dei parametri di configurazione.

file_uploads bool

Indica se abilitare o meno gli upload di file. Vedere anche i parametri upload_max_filesize, upload_tmp_dir e post_max_size.

upload_tmp_dir string

Directory temporanea utilizzata per il transito dei file durante l'upload. Deve avere i permessi di scrittura per gli utenti utilizzati da PHP per girare. Se non indicata il PHP utilizzerà il default di sistema.

Se la directory specificata non ha i permessi di scrittura, PHP ripiega sulla directory temporanea di sistema. Se open_basedir è attivo, la directory demporanea di sistema deve avere i diritti di scrittura, per permettere un upload.

upload_max_filesize int

La dimensione massima di un file inviato.

Quando un integer è usato, il valore è misurato in byte. Si può anche usare una notazione abbreviata come descritto in questa FAQ.
max_file_uploads int

Il numero massimo di file che si possono caricare in upload simultaneamente. A partire da PHP 5.3.4, i campi upload lasciati vuoti durante l'invio non sono presi in conto da questo limite.

General SQL

Parametri di configurazione generali per SQL
Nome Default Modificabile Storico dei cambiamenti
sql.safe_mode "0" INI_SYSTEM Rimosso da PHP 7.2.0

Breve descrizione dei parametri di configurazione.

sql.safe_mode bool

Se acceso, le funzioni di connessione al databse che specificano valori di default useranno questi valori al posto degli argomenti forniti dall'utente. Per conoscere i valori di default, consultare la documentazione per le funzioni di connessione specifiche.

Avviso

Questa funzionalità è stata REMOVED da PHP 7.2.0.

Windows Specific

Opzioni di confugurazione specifiche per Windows
Nome Default Modificabile Storico dei cambiamenti
windows.show_crt_warning "0" INI_ALL  

Breve descrizione dei parametri di configurazione.

windows.show_crt_warning bool

Questa direttiva mostra il warning del Windows CRT se abilitata.

add a note

User Contributed Notes 9 notes

up
10
luisdev
4 years ago
https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
up
4
Simone Pellegatta
3 years ago
Be careful while using auto_prepend_file.

When the custom exception handler, set by set_exception_handler(), handles an uncaught exception, it interrupts the execution of every script.

If the script with the unhandled exception has been automatically prepended or included by an automatically prepended script, however, the main script will continue running anyway.

This could cause several issues: when we think that throwing an exception would automatically interrupt the current application, a whole chunk of code is going to run anyway.
up
4
diamondeagle at webmail dot co dot za
4 years ago
Note regarding the upload_tmp_dir setting and UNC Paths:

When using PHP on Windows OS and IIS FastCGI, if you need to use a UNC path to a folder on a network drive for the upload_tmp_dir setting then you must use three \ characters at the front of the UNC path.

Windows and PHP use the first slash as an escape character, so if you only use two slashes then it passes a UNC path with just one backslash. That is not valid for UNC paths and you many experience problems when uploading files, such as errors saying that "PHP is missing a temporary folder".

Correct:
upload_tmp_dir = "\\\path\to\your\folder"

Incorrect:
upload_tmp_dir = "\\path\to\your\folder"
up
0
juliohenrique at msn dot com
17 days ago
PHP does not capture the file size when the upload_max_filesize directive is set to less than the file size. For example, I want to send a message to the user that the file has exceeded the allowed upload size for a certain application, however, the upload_max_filesize directive does not allow it. If I don't want to allow uploading files larger than 2MB, but the upload_max_filesize directive is set to 10M, if the user sends a 15MB file the message is not displayed because $_FILES['arquivo']['size'] comes equal to 0. To display the message I must increase the upload_max_filesize, however, this represents a security flaw. Also, how much should I increase the upload_max_filesize to, to infinity?
I don't know the size of the file the user will upload.
Example:
$file = $_FILES['file'];
switch ($file){
case ($file['size'] > (2097152)):
echo "<p style='color: #f00;'>This file exceeds the size of 2MB!</p>";
break;
In the case where upload_max_filesize is set to, for example, 10M, if the user uploads a 15M file, PHP does nothing (does not display the message) because $arquivo['size'] comes as int(0).
With 'if else' the same thing happens.
Maybe I don't know how to code, but I've tried in several ways.
up
0
fernandobasso dot br at gmail dot com
7 years ago
This might help in case someone happens to maintain old applications with a charset other than utf-8.

According to the docs, you can override the default charset if you use `header()`.

Suppose php.ini sets the default_charset to "UTF-8", but you need a legacy charset, like ISO-8859-1.

Still,

<?php header('Content-Type: text/html; Charset=ISO-8859-1'); ?>

would not override the charset, just add it as well and the result
was a response header like (note the two charsets):

Content-Type:"text/html; Charset=ISO-8859-1;charset=UTF-8"

I found it strange the default one as `charset` with a lowercase `c`
as opposed to my custom charset with an uppercase `C`.

What solved was to _override_ the charset using all lowercase letters
as well for the word “charset”:

<?php header('content-type: text/html; charset=ISO-8859-1'); ?>

Then, the double charset from the response headers disappeared, and only the single, custom charset remained.
up
0
leo at korfu dot cz
17 years ago
"If the size of post data is greater than post_max_size..."

It seems that a more elegant way is comparison between post_max_size and $_SERVER['CONTENT_LENGTH']. Please note that the latter includes not only size of uploaded file plus post data but also multipart sequences. Leo
up
-2
dougal at gunters dot org
8 years ago
It appears that if you use both the 'include_path' directives and 'open_basedir', that file searches will hit the include path *first*, before local files. But if 'open_basedir' is not in use, then local files are found first. For example, suppose you have code in '/var/www/myfile.php' which does:

<?php
require_once('config.php');
?>

Further, assume that there is a local file '/var/www/config.php', and there is also a file '/var/local/php/config.php'.

Next, if your php.ini has:

include_path = /var/local/php/

Normally, this would look for '/var/www/config.php' first, and if not found, then it would try '/var/local/php/config.php'.

But if you also have this in php.ini:

open_basedir = /var/www/:/var/local/php/

Then the require would reverse the order of the search, and load '/var/local/php/config.php', even when the local 'config.php' file exists.

Furthermore, if include_path contains directories not in open_basedir, you can end up with a fatal error. For example, change the directive to:

open_basedir = /var/www/:/var/local/includes/php/

Now the require will first find '/var/local/php/config.php' from the include_path, try to include it, but be unable to because of the open_basedir restrictions.
up
-2
Anton Bannikov
3 years ago
I had a problem with 'open_basedir =' string in php.ini. This string was writtren in VirtualHost Directory directive of Apache2 and successfully rewrote the same php.ini setting! It happened with VestaCP, but I think, it's a common way. Goog luck!
up
-2
andre dot wetter at myelco dot ch
2 years ago
If you use Microsoft IIS Windows and want to use open_basedir restrictions with multiple dirs you have to set them into single quotes in the main config xml file of IIS (C:\Windows\System32\inetsrv\config\applicationHost.config). Works fine in IIS 10.

Multiple files with single quotes and ; for windows:
"C:\php\php-cgi.exe|-d open_basedir='C:\Windows\Temp\;D:\mywebsite1\'"

Only one dir works fine without single quotes:
"C:\php\php-cgi.exe|-d open_basedir=D:\mywebsite1\"

In my main config xml file of IIS there are 2 nodes to set per website and the definitions have to be equal:
configuration\Location\system.webServer\handlers\add
configuration\system.webServer\fastCgi
To Top