https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
Esta lista incluye las directivas internas del php.ini que puede definir para personalizar su configuración de PHP. Las directivas gestionadas por las extensiones se enumeran y detallan en las páginas de documentación respectivas de las extensiones; la información sobre las directivas en las sesiones, por ejemplo, se puede encontrar en la página de documentación de las sesiones.
Nota:
Los valores predeterminados enumerados aquí se utilizarán cuando php.ini no se carga; los valores de los archivos php.ini en entornos de producción y desarrollo pueden variar.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
short_open_tag | "1" | INI_ALL |
|
precision | "14" | INI_ALL |
|
serialize_precision | "-1" | INI_ALL |
Antes de PHP 7.1.0, el valor predeterminado era 17. |
disable_functions | "" | INI_SYSTEM solo |
|
disable_classes | "" | php.ini solo | |
exit_on_timeout | "" | INI_ALL |
|
expose_php | "1" | php.ini solo | |
hard_timeout | "2" | INI_SYSTEM |
Disponible a partir de 7.1.0. |
zend.exception_ignore_args | "0" | INI_ALL |
Disponible a partir de 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 restricciones |
|
zend.exception_string_param_max_len | "15" | INI_ALL |
Disponible a partir de PHP 8.0.0. |
He aquí una breve explicación de las directivas de configuración.
short_open_tag
bool
Define si las etiquetas cortas de apertura de PHP (<? ?>
) están permitidas o no. Si desea usar PHP con XML, debe desactivar esta opción de configuración para poder usar <?xml ?>
. De lo contrario, puede escribirlo usando PHP, por ejemplo: <?php echo '<?xml version="1.0">'; ?>
. Si esta opción está desactivada, debe usar la versión larga de las etiquetas de apertura de PHP (<?php ?>
).
Nota:
Esta directiva no afecta el uso de
<?=
, que siempre está disponible.
precision
int
-1
significa que se utilizará el mejor algoritmo para redondear este número.
serialize_precision
int
-1
significa que se utilizará el mejor algoritmo para redondear este número.
expose_php
bool
Expone a todos los clientes el hecho de que PHP está instalado en el servidor. Esto incluye la versión de PHP en los encabezados HTTP de la respuesta (X-Powered-By: PHP/5.3.7).
disable_functions
string
Esta directiva le permite deshabilitar ciertas funciones. Toma una lista de nombres de funciones separados por comas.
Solo las funciones internas pueden deshabilitarse usando esta directiva. Las funciones definidas por el usuario no se ven afectadas.
Esta directiva debe definirse en el php.ini. Por ejemplo, no puede definirse en el archivo httpd.conf.
disable_classes
string
zend.assertions
int
1
, se generará el código de aserción (en modo de desarrollo). Cuando se establece en 0
, se generará el código de aserción, pero se ignorará (no se ejecutará) durante la ejecución. Cuando se establece en -1
, el código de aserción no se generará, haciendo que las aserciones sean completamente neutrales (en modo de producción).
Nota:
Si un proceso se inicia en modo de producción, zend.assertions no puede cambiarse en tiempo de ejecución, ya que el código para las aserciones no se ha generado.
Si un proceso se inicia en modo de desarrollo, zend.assertions no puede establecerse en
-1
en tiempo de ejecución.
zend.exception_string_param_max_len
int
"0"
y "1000000"
.
hard_timeout
int
Cuando se alcanza el tiempo de espera establecido en max_execution_time, el tiempo de ejecución de PHP destruirá los recursos de manera elegante. Si algo se bloquea cuando esto ocurre, se activará el tiempo de espera forzado durante el número de segundos establecido. Cuando se alcanza el tiempo de espera forzado, PHP saldrá de manera no elegante. Cuando se establece en 0, el tiempo de espera forzado nunca se activará.
Cuando PHP finaliza con un tiempo de espera forzado, se verá algo así:
Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
zend.exception_ignore_args
bool
Excluye los argumentos en los trazas de pila generados desde las excepciones.
zend.multibyte
bool
Activa el análisis léxico de archivos PHP en codificaciones multibyte. Activar zend.multibyte es necesario para usar ciertas codificaciones de caracteres como SJIS, BIG5, etc., que contienen caracteres especiales en codificación multibyte. Las codificaciones compatibles con ISO-8859-1 como UTF-8, EUC, etc., no requieren esta opción.
Activar zend.multibyte requiere la extensión mbstring.
zend.script_encoding
string
Este valor se usará a menos que una directiva declare(encoding=...) aparezca en la parte superior del script. Cuando se usa una codificación incompatible con ISO-8859-1, se deben usar las opciones zend.multibyte y zend.script_encoding.
Las cadenas de caracteres se convertirán desde zend.script_encoding a mbstring.internal_encoding, como si se hubiera llamado a la función mb_convert_encoding().
zend.detect_unicode
bool
Verifica el BOM (Byte Order Mark)
y mira si el archivo contiene caracteres multibyte válidos. Esta detección se realiza antes de que se ejecute la función __halt_compiler(). Disponible solo en modo multibyte de Zend.
zend.signal_check
bool
Verifica si se está utilizando un manejador de señales de reemplazo al detenerse.
exit_on_timeout
bool
Esta es una directiva solo para Apache1 mod_php que fuerza a los hilos de Apache a salir si ocurre un tiempo de espera de expiración de PHP. Tal expiración produce internamente una llamada a longjmp() en Apache1 que puede dejar algunas extensiones en un estado no consistente. Al terminar el proceso, todos los bloqueos y la memoria se limpiarán.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
memory_limit | "128M" | INI_ALL |
He aquí una breve explicación de las directivas de configuración.
memory_limit
int
Esta opción determina la memoria límite, en bytes, que un script está permitido asignar. Esto evita que un script mal codificado use toda la memoria. Tenga en cuenta que para no tener ningún límite, debe establecer esta directiva en -1
.
Véase también: max_execution_time.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
realpath_cache_size | "4M" | INI_SYSTEM |
Antes de PHP 7.0.16 y 7.1.2, el valor predeterminado era "16K" |
realpath_cache_ttl | "120" | INI_SYSTEM |
Nota:
Usar open_basedir desactivará la caché realpath.
He aquí una breve explicación de las directivas de configuración.
realpath_cache_size
int
Determina el tamaño de la caché de realpath que usará PHP. Este valor debería aumentarse en sistemas donde PHP abre varios archivos, para reflejar la cantidad de operaciones realizadas en los archivos.
El tamaño representa el número total de bytes en la cadena almacenada del camino, más el tamaño de los datos asociados con la entrada de la caché. Esto significa que para almacenar caminos largos en la caché, el tamaño de la caché debe ser lo suficientemente grande. Este valor no controla directamente el número de caminos distintos que pueden almacenarse en caché.
El tamaño necesario para los datos de la entrada de la caché depende del sistema.
realpath_cache_ttl
int
Tiempo (en segundos) durante el cual persiste la información de la caché de realpath para un archivo o directorio dado. Para sistemas con archivos que cambian poco, considere aumentar este valor.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
arg_separator.output | "&" | INI_ALL |
|
arg_separator.input | "&" | INI_PERDIR |
|
variables_order | "EGPCS" | INI_PERDIR |
|
request_order | "" | INI_SYSTEM |INI_PERDIR |
|
auto_globals_jit | "1" | INI_PERDIR |
|
register_argc_argv | "1" | INI_PERDIR |
|
enable_post_data_reading | "1" | INI_PERDIR |
|
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 |
He aquí una breve explicación de las directivas de configuración.
arg_separator.output
string
El separador utilizado cuando PHP genera las URL para separar los argumentos.
arg_separator.input
string
Lista de separadores utilizados por PHP para analizar las URL entrantes y deducir los valores.
Nota:
¡Cada carácter de esta directiva se considera un separador!
variables_order
string
Define el orden de análisis de las variables EGPCS (E
nvironment, G
et, P
ost, C
ookie y S
erver). Por ejemplo, si variables_order se establece en "SP"
, entonces PHP creará superglobals $_SERVER y $_POST, pero no creará $_ENV, $_GET y $_COOKIE. Establecer este orden en "" significa que ninguna superglobals se definirá.
En las SAPIs CGI y FastCGI, $_SERVER también se llena con valores del entorno; S
siempre es equivalente a ES
en lo que respecta a la posición de E
en cualquier otro lugar en esta directiva.
Nota:
El contenido y el orden de $_REQUEST también se ven afectados por esta directiva.
request_order
string
Esta directiva describe el orden en el que PHP coloca las variables GET, POST y Cookie en la matriz _REQUEST. La colocación se realiza de izquierda a derecha, con los valores más recientes sobrescribiendo los valores más antiguos.
Si esta directiva no está definida, se utiliza variables_order para el contenido de $_REQUEST.
Tenga en cuenta que los archivos php.ini de la distribución predeterminada no contienen 'C'
para las cookies, por razones de seguridad.
auto_globals_jit
bool
Cuando esta directiva está activada, las variables SERVER, REQUEST y ENV se crean cuando se usan: solo si es necesario. Si estas variables no se usan en un script, el script verá un aumento en el rendimiento.
El uso de las variables SERVER, REQUEST y ENV se verifica durante la compilación. Por lo tanto, usarlas con, por ejemplo, variables dinámicas no provocará su inicialización.
register_argc_argv
bool
enable_post_data_reading
bool
post_max_size
int
post_max_size
.
Cuando se usa un integer, el
valor del mismo es medido en bytes. También se puede usar la notación reducida, tal como se describe
en esta FAQ.
Si el tamaño de los datos recibidos por el método POST es mayor que post_max_size
, las superglobales $_POST y $_FILES estarán vacías. Esto se puede monitorear de diferentes formas, por ejemplo, pasando una variable $_GET al script que procesa los datos, es decir, <form action="edit.php?processed=1">
, y luego verificar si $_GET['processed'] está definido.
Nota:
PHP permite palabras clave para los bytes, incluyendo K (kilo), M (mega) y G (giga). PHP realiza la conversión automáticamente si usa estas palabras clave. Tenga cuidado de no exceder el límite de un entero con signo de 32 bits (si usa las versiones de 32 bits), en cuyo caso su script fallará.
Versión | Descripción |
---|---|
5.3.4 |
post_max_size = 0 no desactivará el límite cuando el tipo de contenido es application/x-www-form-urlencoded o no está registrado con PHP.
|
5.3.2 , 5.2.12 |
Permite un tamaño de envío ilimitado estableciendo post_max_size en 0.
|
auto_prepend_file
string
Especifica el nombre de un archivo que se recorrerá automáticamente antes del archivo principal. Este archivo se incluye como si se hubiera incluido con la función require, por lo que se usa include_path.
El valor especial none
desactiva la adición automática.
auto_append_file
string
Especifica el nombre del archivo que se recorrerá automáticamente después del archivo principal. Este archivo se incluye como si se hubiera incluido con la función require, por lo que se usa include_path.
El valor especial none
desactiva la adición automática.
Nota: Si el script termina con la función exit(), no se realizará la adición automática.
default_mimetype
string
Por defecto, PHP enviará el tipo de medio usando el encabezado Content-Type. Para desactivar esto, deje este valor vacío.
El tipo de medio predeterminado en PHP es text/html.
default_charset
string
"UTF-8" es el valor predeterminado y se usa como el conjunto de caracteres predeterminado para las funciones y módulos. PHP siempre enviará un conjunto de caracteres predeterminado para htmlentities(), html_entity_decode() y htmlspecialchars() si se omite el parámetro encoding
. El valor de default_charset
también se usará para establecer el conjunto de caracteres predeterminado para las funciones iconv si las opciones de configuración iconv.input_encoding
, iconv.output_encoding
y iconv.internal_encoding
no están definidas, y para las funciones mbstring si las opciones de configuración mbstring.http_input
, mbstring.http_output
y mbstring.internal_encoding
no están definidas.
Todas las versiones de PHP usarán este valor como el conjunto de caracteres predeterminado en el encabezado Content-Type predeterminado enviado por PHP si el encabezado no se sobrescribe a través de una llamada a la función header().
No se recomienda establecer un default_charset
en un valor vacío.
input_encoding
string
Este parámetro se usa para los módulos multibyte como mbstring e iconv. Vacío por defecto.
output_encoding
string
Este parámetro se usa para los módulos multibyte como mbstring e iconv. Vacío por defecto.
internal_encoding
string
Este parámetro se usa para los módulos multibyte como mbstring e iconv. Vacío por defecto. Si está vacío, se usa default_charset.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
include_path | ".;/ruta/a/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 | "/ruta/a/php" | INI_SYSTEM |
|
extension | NULL | php.ini solo | |
zend_extension | NULL | php.ini solo | |
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 |
He aquí una breve explicación de las directivas de configuración.
include_path
string
Especifica una lista de directorios donde las funciones require, include, fopen(), file(), readfile() y file_get_contents() buscarán los archivos. El formato es idéntico a la variable de entorno del sistema PATH: una lista de directorios separados por dos puntos (:
) en Unix o por un punto y coma (;
) en Windows.
PHP considera cada entrada del camino de inclusión por separado al buscar archivos para incluir. Verificará el primer camino y, si no encuentra el archivo, verificará el siguiente camino, hasta encontrar el archivo para incluir o devolver una alerta de tipo E_WARNING
o de tipo E_ERROR
usando la función set_include_path().
Ejemplo #1 include_path en Unix
include_path=".:/php/includes"
Ejemplo #2 include_path en Windows
include_path=".;c:\php\includes"
El uso de un punto (.
) en el camino de inclusión le permite hacer inclusiones relativas al directorio actual. Sin embargo, es más eficiente incluir explícitamente un archivo con include './file'
que pedirle a PHP que verifique el directorio actual en cada inclusión.
Nota:
Las variables
ENV
también están disponibles en los archivos .ini. Por lo tanto, es posible hacer referencia al directorio home usando la sintaxis${LOGIN}
y${USER}
.Las variables de entorno pueden variar según las APIs del servidor, así como según los entornos.
Ejemplo #3 include_path en Unix usando la variable de entorno ${USER}
include_path = ".:${USER}/pear/php"
open_basedir
string
Limita los archivos que pueden ser accedidos por PHP a una estructura de directorios específica, incluyendo el archivo mismo.
Cuando un script intenta acceder a un archivo con, por ejemplo, la función include o la función fopen(), la ruta al archivo se analiza. Cuando el archivo se encuentra fuera de la estructura de directorios especificada, PHP se negará a acceder a él. Todos los enlaces simbólicos se resuelven, por lo que no es posible eludir esta restricción con un enlace simbólico. Si el archivo no existe, entonces el enlace simbólico no se puede resolver y el nombre del archivo se compara con open_basedir.
La opción open_basedir puede afectar más que las funciones del sistema de archivos; por ejemplo, si MySQL está configurado para usar el controlador mysqlnd, LOAD DATA INFILE
se verá afectado por la opción open_basedir. La mayoría de las extensiones de PHP usan la opción open_basedir
de esta manera.
El valor especial .
indica que se usará el directorio actual del script como directorio base. Sin embargo, esto es ligeramente peligroso en el sentido de que el directorio actual puede cambiarse fácilmente con la función chdir().
En el archivo httpd.conf, open_basedir puede desactivarse (por ejemplo, para algunos hosts virtuales) de la misma manera que cualquier directiva de configuración con "php_admin_value open_basedir none
".
En Windows, separe los directorios con un punto y coma. En todos los demás sistemas, separe los directorios con dos puntos. Al usar Apache como módulo, los caminos de open_basedir desde los directorios padres ahora se heredan automáticamente.
La restricción especificada con open_basedir es un nombre de directorio, no un prefijo.
De manera predeterminada, todos los archivos pueden abrirse.
Nota: open_basedir puede afinarse en el momento de la ejecución. Esto significa que si open_basedir se establece en
/www/
en el archivo php.ini, un script puede afinar la configuración en/www/tmp/
en el momento de la ejecución usando la función ini_set(). Al recorrer varios directorios, puede usar la constantePATH_SEPARATOR
según el sistema operativo. A partir de PHP 8.3.0, open_basedir ya no acepta rutas que contengan el directorio padre (..
) cuando se establece en tiempo de ejecución.
Nota:
Usar open_basedir establecerá realpath_cache_size a
0
y, por lo tanto, desactivará la caché realpath.
open_basedir
es solo una medida de protección adicional y no es de ninguna manera exhaustiva, y no debe dependerse de ella cuando se necesita seguridad.
doc_root
string
El directorio raíz de PHP en el servidor. Solo se usa si no está vacío. Si PHP no se compiló con FORCE_REDIRECT, debe definir el doc_root si usa PHP como CGI bajo cualquier servidor web (distinto de IIS). Alternativamente, puede usar la configuración cgi.force_redirect.
user_ini.cache_ttl
int
user_ini.filename
string
user_dir
string
El nombre base del directorio usado en un directorio de usuario para los archivos PHP, por ejemplo, public_html.
extension_dir
string
Especifica el directorio donde PHP debe buscar extensiones externas para cargar. Se recomienda especificar una ruta absoluta. Véase también enable_dl y dl().
extension
string
Qué extensiones deben cargarse dinámicamente al iniciar PHP.
zend_extension
string
Nombre de la extensión Zend cargable dinámicamente (por ejemplo, XDebug) que se cargará al iniciar PHP.
cgi.check_shebang_line
bool
Controla si PHP CGI verifica la línea que comienza con #!
(shebang) en la parte superior del script ejecutado. Esta línea es necesaria si el script está destinado a ejecutarse de forma independiente y a través de un PHP CGI. PHP en modo CGI no lee esta línea y omite su contenido si esta directiva está activa.
cgi.discard_path
bool
Si está activado, el binario PHP CGI puede colocarse fuera del árbol web de manera segura y las personas no podrán eludir la seguridad .htaccess.
cgi.fix_pathinfo
bool
Proporciona un real PATH_INFO
/PATH_TRANSLATED
para CGI. El comportamiento anterior de PHP era establecer PATH_TRANSLATED
en SCRIPT_FILENAME
y no llenar PATH_INFO
. Para obtener más información sobre PATH_INFO
, consulte las especificaciones CGI. Si se establece en 1
, PHP CGI corregirá este camino según las especificaciones. Si se establece en 0
, PHP aplicará el comportamiento anterior. De manera predeterminada, esta directiva está activada. Debe modificar sus scripts para usar SCRIPT_FILENAME
en lugar de PATH_TRANSLATED
.
cgi.force_redirect
bool
cgi.force_redirect es necesario por razones de seguridad al usar PHP en modo CGI bajo la mayoría de los servidores web. Si no lo establece, PHP lo activará automáticamente de manera predeterminada. Puede desactivarlo bajo su propio riesgo.
Nota:
Usuarios de Windows: Al usar IIS, esta opción debe desactivarse; lo mismo ocurre con OmniHTTPD y Xitami.
cgi.nph
bool
Si cgi.nph está activado, forzará a CGI a enviar siempre el estado: 200 con cada solicitud.
cgi.redirect_status_env
string
Si cgi.force_redirect está activado y no está ejecutando un servidor web Apache o Netscape (iPlanet), debería definir un nombre de variable de entorno que PHP usará para verificar si todo está correcto para continuar la ejecución.
Nota:
Definir esta variable puede tener consecuencias de seguridad. Saber lo que hace antes de hacerlo.
cgi.rfc2616_headers
bool
Le dice a PHP qué tipo de encabezado usar al enviar el código de respuesta HTTP. Si está desactivado, PHP enviará un encabezado "Status:" (» RFC 3875) que es compatible con Apache y otros servidores web. Cuando está activado, PHP enviará un encabezado que cumple con la especificación » RFC 2616.
Si esta opción está activada y está ejecutando PHP en un entorno CGI (por ejemplo, PHP-FPM), no debe usar los encabezados de respuesta HTTP "status" RFC 2616, sino usar el equivalente RFC 3875, es decir, en lugar del encabezado ("HTTP/1.0 404 Not found"), use ("Status: 404 Not Found").
Deje este parámetro desactivado a menos que sepa exactamente lo que está haciendo.
fastcgi.impersonate
bool
FastCGI en IIS (en sistemas operativos basados en WINNT) admite la capacidad de determinar la marca de seguridad del cliente que llama. Esto permite que IIS establezca el contexto de seguridad en el que se ejecutará la solicitud. mod_fastcgi en Apache no admite actualmente esta funcionalidad (03/17/2002). Active si se ejecuta en IIS. De manera predeterminada, está desactivado.
fastcgi.logging
bool
Activa el registro SAPI con FastCGI. Activado de manera predeterminada.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
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_PERDIR |
He aquí una breve explicación de las directivas de configuración.
file_uploads
bool
Permite o no la carga de archivos por HTTP. Véase también las directivas upload_max_filesize, upload_tmp_dir y post_max_size.
upload_tmp_dir
string
El directorio temporal usado para almacenar archivos durante la carga. El usuario bajo el cual se ejecuta PHP debe tener permisos de escritura en este directorio. Si no se especifica, PHP usará el directorio temporal predeterminado del sistema.
Si el directorio especificado aquí no es accesible en escritura, PHP recurrirá al directorio temporal predeterminado del sistema. Si open_basedir está activado, entonces el directorio temporal predeterminado del sistema debe estar permitido para que la carga de archivos funcione.
upload_max_filesize
int
El tamaño máximo en bytes de un archivo subido.
post_max_size debe ser mayor que este valor.
Cuando se usa un integer, el valor del mismo es medido en bytes. También se puede usar la notación reducida, tal como se describe en esta FAQ.max_file_uploads
int
El número máximo de archivos que pueden enviarse simultáneamente. Los campos de carga que se dejan vacíos al enviar no se cuentan en el cálculo de este límite.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
sql.safe_mode | "0" | INI_SYSTEM |
Eliminado a partir de PHP 7.2.0 |
He aquí una breve explicación de las directivas de configuración.
sql.safe_mode
bool
Si está activado, las funciones de conexión a la base de datos que especifican valores predeterminados usarán estos valores en lugar de los argumentos proporcionados. Para los valores predeterminados, consulte la documentación de las funciones de conexión para la base de datos correspondiente.
¡Esta funcionalidad ha sido ELIMINADA a partir de PHP 7.2.0!
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
windows.show_crt_warning | "0" | INI_ALL |
He aquí una breve explicación de las directivas de configuración.
windows.show_crt_warning
bool
Esta directiva muestra las advertencias de CRT de Windows cuando está activada.
https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
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.
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"
"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
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.
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
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!