While the manual says that the file specified by auto_prepend_file is included as if it were called by include(), in fact the file is included as if it were called by require().
In other words, if PHP cannot find the file that you specify with auto_prepend_file, it will throw a fatal error.
Descripción de las directivas del núcleo de php.ini
Esta lista incluye las directivas del núcleo de php.ini que se pueden establecer para la configuración de PHP. Las directivas manejadas por extensiones están enumeradas y detalladas en las páginas de la documentación respectivas de cada extensión. La información sobre las directivas de sesión, por ejemplo, se puede encontrar en la página de sesiones.
Opciones de Httpd
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| async_send | "0" | PHP_INI_ALL |
Opciones de lenguaje
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| short_open_tag | "1" | PHP_INI_PERDIR | PHP_INI_ALL en PHP 4.0.0. PHP_INI_PERDIR en PHP >= 4.0.1. |
| asp_tags | "0" | PHP_INI_PERDIR | PHP_INI_ALL en PHP 4.0.0. |
| precision | "14" | PHP_INI_ALL | |
| serialize_precision | "17" | PHP_INI_ALL | Disponible desde PHP 4.3.2. Hasta PHP 5.3.5, el valor predeterminado era 100. |
| y2k_compliance | "1" | PHP_INI_ALL | Eliminado en PHP 5.4.0. |
| allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | PHP_INI_ALL en PHP en 4.0.0. Eliminada en PHP 5.4.0. |
| disable_functions | "" | Solo en php.ini | Disponible desde PHP 4.0.1. |
| disable_classes | "" | Solo en php.ini | Disponible desde PHP 4.3.2. |
| exit_on_timeout | "" | INI_ALL | Disponible desde PHP 5.3.0. |
| expose_php | "1" | Sólo en php.ini | |
| zend.multibyte | "0" | PHP_INI_ALL | Disponible desde PHP 5.4.0 |
| zend.script_encoding | NULL | PHP_INI_ALL | Disponible desde PHP 5.4.0 |
| zend.signal_check | "0" | PHP_INI_SYSTEM | Disponible desde PHP 5.4.0 |
| zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | Disponible desde PHP 5.0.0. Eliminada en PHP 5.3.0 |
| detect_unicode | "1" | PHP_INI_ALL | Disponible desde PHP 5.1.0. Esta característica obsoleta será eliminada con certeza en el futuro. |
He aquí una breve explicación de las directivas de configuración.
-
short_open_tagboolean -
Indica a PHP si debería permitirse la forma abreviada de las etiquetas de apertura de PHP (
<? ?>). Si se quiere utilizar PHP junto con XML, se puede desactivar esta opción para poder usar<?xml ?>en línea. Si no, puede imprimirse con PHP, por ejemplo:<?php echo '<?xml version="1.0"?>'; ?>. Además, si está desactivada, se debe usar siempre la forma no abreviada de la etiqueta de apertura de PHP (<?php ?>).Nota:
Esta directiva también afecta a la abreviatura
<?=en versiones anteriores a PHP 5.4.0, la cual es lo mismo que<? echo. El uso de esta abreviatura requería queshort_open_tagestuviese activada. Desde PHP 5.4.0,<?=siempre está disponible. - Activa el uso de las etiquetas estilo ASP (<% %>) además de las normales (<?php ?>). Esto incluye la abreviatura de variable-valor <%= $valor %>. Para más información, véase Salir de HTML.
-
precisioninteger - El número de dígitos significativos que se muestran en números de punto flotante.
-
serialize_precisioninteger - El número de dígitos significativos almacenados durante la serialización de números de punto flotante.
-
y2k_complianceboolean - Asegura la compatibilidad con el año 2000 (causará problemas con navegadores no compatibles)
-
allow_call_time_pass_referenceboolean -
Sirve para avisar cuándo los argumentos son pasados por referencia al llamar a una función. El método recomendado para especificar los argumentos que deberían parsarse por referencia es en la declaración de la función. Se anima a probar y desactivar esta opción para asegurarse de que los scripts funcionen adecuadamente también en futuras versiones del lenguaje (si está característica está desactivada, se mostrará una advertencia cada vez que se utilice).
El paso de argumentos por referencia en el momento de llamar a una función quedó obsoleto por razones de limpieza en el código. Una función puede modificar sus argumentos de una manera no documentada si no declaró que dichos argumentos deberían ser pasados por referencia. Para evitar efectos secundarios, es mejor especificar qué argumentos son pasados por referencia solamente en la declaración de la función.
Véase también Explicación de las referencias.
Registro de cambios de allow_call_time_pass_reference Versión Descripción 5.4.0 Eliminada de PHP. 5.3.0 Emite un error de nivel E_DEPRECATED.5.0.0 Obsoleta, y genera un error de nivel E_COMPILE_WARNING. -
expose_phpboolean -
Expone al mundo que PHP está instalado en el servidor, lo que incluye la versión de PHP en la cabecera HTTP (p.ej., X-Powered-By: PHP/5.3.7). Antes de PHP 5.5.0, los GUIDs del logotipo de PHP también eran expuestos, por lo que al añadirlos a la URL de un script de PHP, se mostraba el logotipo correspondiente (p.ej., » http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Esto también afectaba a la salida de phpinfo(), ya que cuando estaba desactivada, no se mostraban el logotipo de PHP y la información de los créditos.
Nota:
Desde PHP 5.5.0, estos GUIDs y la función php_logo_guid() han sido eliminados de PHP, y los GUIDs han sido reemplazados en su lugar con URIs de datos. Por lo tanto, ya no funciona el acceso al logotipo de PHP mediante la adición del GUID a la URL. Similarmente, desactivar
expose_phpno afectará a la visualización del logotipo de PHP en phpinfo().Véase también php_logo_guid() y phpcredits().
-
disable_functionsstring -
Esta directiva permite desactivar ciertas funciones por razones de seguridad. Requiere una lista con los nombres de las funciones delimitados por comas. disable_functions no se ve afectada por el Modo Seguro.
Solamente las funciones internas pueden ser desactivadas usando esta directiva. Las funciones definidas por el usuario no se ven afectadas.
Esta directiva debe ser establecida en el fichero php.ini. Por ejemplo, no puede establecerse en httpd.conf.
-
disable_classesstring -
Esta directiva permite desactivar ciertas clases por razones
de seguridad. Requiere una lista
con los nombres de las clases delimitados por comas. disable_classes
no se ve afectada por el Modo Seguro.
Esta directiva debe ser establecida en el fichero php.ini. Por ejemplo,
no puede establecerse en httpd.conf.
Nota: Sobre la disponibilidad
Esta directiva se encuentra disponible en PHP 4.3.2 -
zend.ze1_compatibility_modeboolean -
Activa el modo de compatibilidad con El Motor Zend 1 (PHP 4). Esto afecta a la clonación, conversión (los objectos sin propiedades son convertidos a
FALSEo 0), y comparación de objetos. En este modo, los objetos son pasados por valor en lugar de por referencia de forma predeterminada.Véase también la sección titulada Migración de PHP 4 a PHP 5.
AdvertenciaEsta característica ha quedado OBSOLETA y fue ELIMINADA a partir de PHP 5.3.0.
-
zend.multibyteboolean -
Permite el análisis de ficheros de código fuente en codificaciones multibyte.
-
zend.script_encodingstring -
Este valor será usado a menos que una directiva declare(encoding=...) aparezca al principio del script.
-
zend.signal_checkboolean -
Para verficar gestores de señales reemplazados en el cierre.
-
detect_unicodeboolean -
Verifica el BOM (Byte Order Mark) y comprueba si el fichero contiene caracteres multibyte válidos. La detección se hace antes del proceso de __halt_compiler(). Está disponible solamente en modo Zend Multibyte.
-
exit_on_timeoutboolean -
Esta es una directiva mod_php-only de Apache1 que fuerza a un subproceso de Apache a salir si expiró el tiempo de ejecución de PHP. Este tiempo de espera provoca una llamada interna a longjmp() en Apache1, que puede dejar algunas extensiones en un estado de incoherencia. Al terminar el proceso, será limpiado cualquier bloqueo pendiente o la memoria.
Límite de recursos
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| memory_limit | "128M" | PHP_INI_ALL | "8M" antes de PHP 5.2.0, "16M" en PHP 5.2.0 |
He aquí una breve explicación de las directivas de configuración.
-
memory_limitinteger -
Establece el máximo de memoria en bytes que un script puede consumir. Ayuda a prevenir que scripts mal programados consuman toda la memoria disponible en el servidor. Observe que para no tener límite de memoria, se ha de establecer esta directiva a -1.
En versiones anteriores a PHP 5.2.1, esta directiva tenía que estar habilitada en tiempo de compilación usando --enable-memory-limit en la línea de configuración. Esta bandera en tiempo de compilación también se requería para definir las funciones memory_get_usage() y memory_get_peak_usage() en versiones anteriores a PHP 5.2.1.
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.
Véase también: max_execution_time.
Ajuste del rendimiento
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| realpath_cache_size | "16K" | PHP_INI_SYSTEM | Disponible desde PHP 5.1.0. |
| realpath_cache_ttl | "120" | PHP_INI_SYSTEM | Disponible desde PHP 5.1.0. |
He aquí una breve explicación de las directivas de configuración.
-
realpath_cache_sizeinteger -
Determina el tamaño de la caché de realpath que va a ser usada por PHP. Este valor debe ser incrementado en sistemas donde PHP abra muchos ficheros, para reflejar la cantidad de operaciones realizadas con ficheros.
-
realpath_cache_ttlinteger -
Tiempo (en segundos) durante el cual almacenar en caché información de realpath para un determinado fichero o directorio. Para sistemas que raramente cambian ficheros, considere incrementar este valor.
Manejo de datos
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| track_vars | "On" | PHP_INI_?? | |
| arg_separator.output | "&" | PHP_INI_ALL | Disponible desde PHP 4.0.5. |
| arg_separator.input | "&" | PHP_INI_PERDIR | Disponible desde PHP 4.0.5. |
| variables_order | "EGPCS" | PHP_INI_PERDIR | PHP_INI_ALL en PHP <= 5.0.5. |
| request_order | "" | PHP_INI_PERDIR | Disponible desde PHP 5.3.0 |
| auto_globals_jit | "1" | PHP_INI_PERDIR | Disponible desde PHP 5.0.0. |
| register_globals | "0" | PHP_INI_PERDIR | PHP_INI_ALL en PHP <= 4.2.3. Eliminada en PHP 5.4.0. |
| register_argc_argv | "1" | PHP_INI_PERDIR | PHP_INI_ALL en PHP <= 4.2.3. |
| register_long_arrays | "1" | PHP_INI_PERDIR | Disponible desde PHP 5.0.0. Obsoleta en PHP 5.3.0. Eliminada en PHP 5.4.0. |
| post_max_size | "8M" | PHP_INI_PERDIR | PHP_INI_SYSTEM en PHP <= 4.2.3. Disponible desde PHP 4.0.3. |
| gpc_order | "GPC" | PHP_INI_ALL | Eliminada en PHP 5.0.0. |
| auto_prepend_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL en PHP <= 4.2.3. |
| auto_append_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL en PHP <= 4.2.3. |
| default_mimetype | "text/html" | PHP_INI_ALL | |
| default_charset | "" | PHP_INI_ALL | |
| always_populate_raw_post_data | "0" | PHP_INI_PERDIR | PHP_INI_ALL en PHP <= 4.2.3. Disponible desde PHP 4.1.0. |
He aquí una breve explicación de las directivas de configuración.
-
track_varsboolean -
Si está activada, las variables de entorno, GET, POST, Cookie y variables de servidor pueden encontrarse en los arrays asociativos globales $_ENV, $_GET, $_POST, $_COOKIE, y $_SERVER.
Observe que desde PHP 4.0.3,
track_varssiempre está activado. -
arg_separator.outputstring -
El separador usado en PHP para distinguir argumentos en las URLs generadas.
-
arg_separator.inputstring -
Lista de separador(es) usados por PHP para convertir datos de URLs en variables.
Nota:
¡Cada carácter de esta directiva es considerado un separador!
-
variables_orderstring -
Establece el orden de interpretación de variables EGPCS (Entorno, Get, Post, Cookie, y Servidor). Por ejemplo, si variables_order es "SP", PHP creará las superglobals $_SERVER y $_POST, pero no creará $_ENV, $_GET, y $_COOKIE. Si se establece a "", las variables superglobals no estarán disponibles.
Si la directiva obsoleta register_globals está activada, entonces variables_order también configura el orden en que las variables ENV, GET, POST, COOKIE y SERVER son rellenadas en el ambito global. Por ejemplo, si variables_order está establecido a "EGPCS", register_globals está activada, y $_GET['acción'] y $_POST['acción'] están establecidos, entonces $acción contendrá el valor de $_POST['acción'] ya que P está después de G en el ejemplo que se muestra.
AdvertenciaEn ambas SAPIs, CGI y FastCGI, $_SERVER también es rellenada con los valores de entorno; S siempre es equivalente a ES independientemente de la posición de E en esta directiva.
Nota:
El contenido y el orden de $_REQUEST también se ve afectado por esta directiva.
-
request_orderstring -
Esta directiva describe el orden en que PHP registra las variables GET, POST y Cookie en el array _REQUEST. El registro se hace de izquierda a derecha; los nuevos valores reemplazan los valores más antiguos.
Si esta directiva no está definida, variables_order se usa para el contenido de $_REQUEST.
Observe que la distribución predeterminada de los ficheros php.ini no contienen 'C' para cookies, por motivos de seguridad.
-
auto_globals_jitboolean -
Cuando está activada, las variables SERVER y EVN son creadas la primera vez que se necesitan ("Just In Time") en lugar de hacerlo cuando el script se inicia. Si estas variables no son usadas en un script, el tener esta directiva activada resultará en una mejora del rendimiento.
Las directivas PHP register_globals, register_long_arrays, y register_argc_argv deben estar desactivadas para que esta directiva tenga efecto. Desde PHP 5.1.3 no es necesario que esté desactivada register_argc_argv.
AdvertenciaEl uso de las variables SERVER y ENV se comprueba durante el tiempo de compilación, por lo que utilizarlas a través de, por ejemplo, variables variables no causará su inicialización.
-
register_globalsboolean -
Si registrar o no las variables EGPCS (Entorno, GET, POST, Cookie, Servidor) como variables globales.
A partir de » PHP 4.2.0, el valor predeterminado de esta directiva es off.
Para información relacionada, por favor lea el capítulo de seguridad Utilizar register_globals.
Por favor, observe que
register_globalsno puede ser establecida en tiempo de ejecución ( ini_set()). Aún así, puede usar .htaccess si el servidor lo permite, tal como se muestra abajo. Un ejemplo de una entrada de .htaccess:php_flag register_globals off.Nota:
register_globalsse ve afectada por la directiva variables_order.AdvertenciaEsta característica ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
-
register_argc_argvboolean - Indica a PHP si debe declarar las variables argv y argc (que pueden que contengan la información de GET). Véase también la línea de comandos.
-
register_long_arraysboolean -
Indica a PHP si registrar o no las obsoletas variables
predefinidas del tipo $HTTP_*_VARS.
Cuando esté activada (predeterminado), las variables largas predefinidas
de PHP, como $HTTP_GET_VARS, estarán definidas.
Si no se utilizan, se recomienda desactivarlas
por razones de rendimiento. En su lugar, use los arrays superglobales,
como $_GET.
Esta directiva empezó a estar disponible en PHP 5.0.0.
Advertencia
Esta característica ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
-
enable_post_data_readingboolean - Al deshabilitar esta opción hace que $_POST y $_FILES no sean rellenados. La única manera de leer datos de POST será a través de la envoltura de flujo php://input. Esto puede ser útil en peticiones de proxys o para procesar los datos de POST de una manera efeciente en cuestión de memoria.
-
post_max_sizeinteger -
Define el tamaño máximo de datos de POST permitidos. Esta opción también afecta
a la subida de ficheros. Para subir ficheros grandes, este valor debe ser mayor
que upload_max_filesize.
Si el límite de memoria está activado por un script de configuración, memory_limit también afecta
la subida de ficheros. Por norma general,
memory_limit debe ser
mayor que
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 de POST es mayor que post_max_size, las superglobales $_POST y $_FILES estarán vacías. Esto se puede rastrear de varias maneras, por ejemplo, pasando la variable $_GET al script que procesa los datos, esto es, <form action="edit.php?procesado=1">, y luego comprobar si la variable $_GET['procesado'] existe.Nota:
PHP acepta abreviaturas para algunos valores, incluyendo K (kilo), M (mega) y G (giga). PHP hará las conversión automaticamente si utiliza cualesquiera de estas abreviaturas. Tenga cuidado de no execeder el límite de los enteros con signo de 32 bits (si está usando veriones de 32 bits), puesto que hará que el script falle.
-
gpc_orderstring -
Establece el orden de análisis de las variables GET/POST/COOKIE. Por omisión, esta directiva está establecida a "GPC". Al establecerla a "GP", por ejemplo, PHP ignorará completamente las cookies y sobreescribirá cualquier variable del método GET con variables del método POST que tengan el mismo nombre.
Nota:
Esta opción fue eliminada en PHP 5.0.0. Utilice variables_order en su lugar.
-
auto_prepend_filestring -
Especifica el nombre del fichero que será analizado automáticamente antes del fichero principal. El fichero es incluido como si fuera llamado con la función require, por lo que se usa include_path.
El valor especial none desactiva esta directiva.
-
auto_append_filestring -
Especifica el nombre del fichero que será analizado automaticamente después del fichero principal. El fichero es incluido como si fuera llamado con la función require, por que se utiliza include_path.
El valor especial none desactiva el esta directiva.
Nota: Si el script finaliza con exit(), está funcionalidad no será llevada a cabo.
-
default_mimetypestring -
-
default_charsetstring -
PHP siempre muestra el tipo de codificación de caracteres de forma predeterminada en la cabecera Content-type:. Para desactivar el envío del conjunto de caracteres, simplemente deje esta directiva vacía.
-
always_populate_raw_post_databoolean -
Rellenar siempre la variable $HTTP_RAW_POST_DATA con el contenido sin tratar de los datos de POST. De lo contrario, la variable contendrá solamente tipos MIME no reconocidos. De todas formas, el mejor método para acceder a los datos sin tratar de POST es mediante php://input. $HTTP_RAW_POST_DATA no está disponible con enctype="multipart/form-data".
Véase también: magic_quotes_gpc, magic_quotes_runtime, y magic_quotes_sybase.
Rutas y directorios
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| include_path | ".;/path/to/php/pear" | PHP_INI_ALL | |
| open_basedir | NULL | PHP_INI_ALL | PHP_INI_SYSTEM en PHP < 5.3.0 |
| doc_root | NULL | PHP_INI_SYSTEM | |
| user_dir | NULL | PHP_INI_SYSTEM | |
| extension_dir | "/path/to/php" | PHP_INI_SYSTEM | |
| extension | NULL | Solamente en php.ini | |
| zend_extension | NULL | Solamente en php.ini | |
| zend_extension_debug | NULL | Solamente en php.ini | Disponible antes de PHP 5.3.0. |
| zend_extension_debug_ts | NULL | Solamente en php.ini | Disponible antes de PHP 5.3.0. |
| zend_extension_ts | NULL | Solamente en php.ini | Disponible antes de PHP 5.3.0. |
| cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | Disponible desde PHP 5.2.0. |
| cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | Disponible desde PHP 4.3.0. PHP_INI_ALL antes de PHP 5.2.1. |
| cgi.force_redirect | "1" | PHP_INI_SYSTEM | Disponible desde PHP 4.2.0. PHP_INI_ALL antes de PHP 5.2.1. |
| cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | Disponible desde PHP 4.2.0. PHP_INI_ALL antes de PHP 5.2.1. |
| cgi.rfc2616_headers | "0" | PHP_INI_ALL | Disponible desde PHP 4.3.0. |
| fastcgi.impersonate | "0" | PHP_INI_SYSTEM | Disponible desde PHP 4.3.0. PHP_INI_ALL antes de PHP 5.2.1. |
| fastcgi.logging | "1" | PHP_INI_SYSTEM | Disponible desde PHP 4.3.0. PHP_INI_ALL antes de PHP 5.2.1. |
He aquí una breve explicación de las directivas de configuración.
-
include_pathstring -
Especifica la lista de directorios donde las funciones require, include, fopen(), file(), readfile() y file_get_contents() buscarán ficheros. El formato es como la variable de entorno PATH del sistema: una lista de directorios separados por dos puntos en Unix o separados por punto y coma en Windows.
PHP considera cada entrada de la ruta de inclusión por separado cuando está buscando ficheros a incluir. Primero buscará en la primera ruta, y si no lo encuentra ahí, buscará en la siguiente, hasta que encuentre el fichero incluido, o devuelva una advertencia o un error. Se puede modificar o establecer una ruta de incluición propia en tiempo de ejecucción usando 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 . en la ruta de inclusión permite el uso de inclusiones relativas, ya que significa el directorio actual. Sin embargo, es más eficiente usar explícitamente include './fichero' que hacer que PHP compruebe siempre el directorio actual para cada inclusión.
Nota:
Las variables ENV también son accesibles en ficheros .ini. Por lo tanto, es posible hacer referencia al directorio raíz utilizando ${LOGIN} y ${USER}.
Las variables de entorno podrían variar entre APIs de servidores, ya que sus entornos pueden ser diferentes.
Ejemplo #3 include_path en Unix usando la variable de entorno ${USER}
include_path = ".:${USER}/pear/php" -
open_basedirstring -
El límite de ficheros que puede abrir PHP en el árbol de directorios especificado, incluyendo el fichero en sí. Esta directiva NO se ve afectada si el Modo Seguro está activado (On) o desactivado (Off).
Cuando un script intenta abrir un fichero, con por ejemplo, fopen() o gzopen(), se comprueba la ubicación del fichero. Si el fichero está fuera del árbol de directorios especificado, PHP rehusará abrirlo. Todos los enlaces simbólicos están resueltos, por lo que no es posible evitar esta restricción usando enlaces simbólicos. Si el fichero no existe, el enlace simbólico no podrá resolverse y el nombre del fichero es comparado con open_basedir (resuelto).
El valor especial
.indica que el directorio de trabajo del script será usado como directorio base. Esto es, sin embargo, un poco peligroso, ya que el directorio de trabajo del script puede ser fácilmente cambiado con la función chdir().En httpd.conf, se puede desactivar open_basedir (p.ej. para algunos servidores virtuales) de la misma manera que cualquier otra directiva de configuración con "php_admin_value open_basedir none".
Bajo Windows, los directorios se han de separar con punto y coma. En cualquier otro sistema, se ha de hacer con dos puntos. Como módulo de Apache, las rutas de open_basedir de los directorios superiores se heredan automáticamente.
La restricción especificada en open_basedir es un nombre de directorio desde PHP 5.2.16 y 5.3.4. Las versiones anteriores lo usaban como un prefijo. Esto quiere decir que "open_basedir = /dir/incl" también tiene acceso a "/dir/include" y "/dir/incls, si existen. Cuando se quiera restringir el acceso solamente a un directorio específico, se ha de finalizar con una barra. Por ejemplo: open_basedir = /dir/incl/
El valor predeterminado permite abrir cualquier fichero.
Nota:
A partir de PHP 5.3.0, open_basedir puede usarse en tiempo de ejecución. Esto significa que si open_basedir está establecido como /www/ en php.ini, un script puede reforzar la configuración a /www/tmp/ en tiempo de ejecución con ini_set(). Cuando se enumeran varios directorios, se puede usar la constante
PATH_SEPARATORcomo separador, independientemente del sistema operativo. -
doc_rootstring -
El "directorio raíz" de PHP en el servidor. Solamente usada si no está vacía. Si PHP está configurado con safe mode, ningún otro fichero fuera de este directorio será servido. Si PHP no se compiló con FORCE_REDIRECT, debería establecerse doc_root si se está usando PHP como CGI bajo cualquier tipo de servidor (que no sea IIS). La alternativa es usar la configuación de cgi.force_redirect de más abajo.
-
user_dirstring -
El nombre base del directorio usado en un directorio principal de usuario para ficheros PHP, por ejemplo public_html .
-
extension_dirstring -
En qué directorio debería buscar PHP extensiones que se pueden cargar dinámicamente. Véase también: enable_dl, y dl().
-
extensionstring -
Qué extensiones se cargarán dinámicamente cuando se inicie PHP.
-
zend_extensionstring -
La ruta absoluta donde cargar una extensión Zend dinámica (por ejemplo APD) cuando se inicie PHP.
-
zend_extension_debugstring -
Variante de zend_extension para extensiones compiladas con información de depuración antes de PHP 5.3.0.
-
zend_extension_debug_tsstring -
Variante de zend_extension para extensiones compiladas con información de depuración y subprocesamiento seguro antes de PHP 5.3.0.
-
zend_extension_tsstring -
Variante de zend_extension para extensiones compiladas con subprocesamiento seguro antes de PHP 5.3.0.
-
cgi.check_shebang_lineboolean -
Controla si PHP en modo CGI comprueba líneas que empiezan por #! (shebang) en el inicio del script que se está ejecutando. Esta línea podría ser necesaria si el script admite su ejecución tanto como un script independiente como mediante el modo CGI de PHP. El modo CGI de PHP omite esta línea e ignora su contenido si esta directiva si está activada.
-
cgi.fix_pathinfoboolean -
Proporciona soporte real de PATH_INFO / PATH_TRANSLATED para CGI. El comportamiento anterior de PHP era establecer PATH_TRANSLATED a SCRIPT_FILENAME, por lo que no comprendía lo que era PATH_INFO. Para más información sobre PATH_INFO, véanse las especificaciones de CGI. Si se establece el valor de esta directiva a 1, el modo CGI de PHP corregirá sus rutas conforme a las especificaciones. Si se establece a cero, funcionará como anteriormente. Esta directiva está activada de forma predeterminada. Debería corregir sus scripts para que utilicen SCRIPT_FILENAME en lugar de PATH_TRANSLATED.
-
cgi.force_redirectboolean -
cgi.force_redirect es necesario para proporcionar seguridad al ejecutar PHP como CGI bajo la mayoría de servidores web. Si no se define, PHP activa esta directiva de forma predeterminada. Puede desactivarla bajo su propia responsabilidad.
Nota:
Para usuarios de Windows: Al usar IIS, esta ocpción debe estar desactivada. Para OmniHTTPD o Xitami se aplica lo mismo.
-
cgi.redirect_status_envstring -
Si cgi.force_redirect está activada, y no se están usando servidores web Apache o Netscape (iPlanet), podría ser necesario establecer el nombre de una variable de entorno que PHP buscará para saber que se puede continuar con la ejecucción.
Nota:
Establecer esta variable podría causar problemas de seguridad, no la cambie a no ser que sepa lo que está haciendo.
-
cgi.rfc2616_headersint -
Le indica a PHP qué tipo de encabezados usar cuando envía el código de respuesta HTTP. Si está establecido a 0, PHP envía el estado: Encabezado admitido por Apache y otros servidores web. Cuando esta opción está establecida a 1, PHP enviará encabezados compatibles con la » RFC 2616. Déjelo a 0 a no ser que sepa lo que está haciendo.
-
fastcgi.impersonatestring -
FastCGI bajo IIS (en SO basados en WINNT) admite la capacidad de imitar tokens de seguridad del cliente que llama. Esto permite a IIS definir el contexto de seguridad en el que la petición se ejecuta. mod_fastgci bajo Apache actualmente no admite esta característica (17/03/2002). Establézcalo a 1 si usa IIS. El valor predeterminado es cero.
-
fastcgi.loggingboolean -
Activa la identificación de la SAPI cuando se usa FastCGI. El valor predeterminado es habilitar la identificación.
Subida de ficheros
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| file_uploads | "1" | PHP_INI_SYSTEM | PHP_INI_ALL en PHP <= 4.2.3. Disponible desde PHP 4.0.3. |
| upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
| max_input_nesting_level | 64 | PHP_INI_PERDIR | Disponible desde PHP 5.3.9. |
| max_input_vars | 1000 | PHP_INI_PERDIR | Disponible desde PHP 5.3.9. |
| upload_max_filesize | "2M" | PHP_INI_PERDIR | PHP_INI_ALL en PHP <= 4.2.3. |
| max_file_uploads | 20 | PHP_INI_SYSTEM | Disponible desde PHP 5.2.12. |
He aquí una breve explicación de las directivas de configuración.
-
file_uploadsboolean o integer -
Si permitir o no la subida de ficheros mediante HTTP. Véanse también las directivas upload_max_filesize, upload_tmp_dir, y 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. -
upload_tmp_dirstring -
El directorio temporal usado para almacenar ficheros durante el proceso de subida. Es necesario tener permisos de escritura para el usuario que está ejecutando PHP. Si no está especificado, PHP usará el predeterminado del sistema.
Si el directorio especificado no tiene permisos de escritura, PHP recurrirá al directorio temporal predeterminado del sistema. Si la directiva open_basedir está activada, al directorio predeterminado del sistema se le ha de permitir la subida de ficheros para que funcione.
-
upload_max_filesizeinteger -
El tamaño máximo de un fichero subido.
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_uploadsinteger -
El número máximo de ficheros a subir permitidos de forma simultánea. A partir de PHP 5.3.4, los campos de subida de ficheros dejados en blanco en el momento del envío no cuentan en este límite.
Configuración de SQL en general
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| sql.safe_mode | "0" | PHP_INI_SYSTEM |
He aquí una breve explicación de las directivas de configuración.
-
sql.safe_modeboolean -
Si está activado, las funciones de conexión a bases de datos que especifiquen valores predeterminados, usarán dichos valores en lugar de los argumentos proporcionados. Los valores predeterminados de dichas funciones se pueden ver en sus respectivas documentaciones.
Específico de Windows
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| windows_show_crt_warning | "0" | PHP_INI_ALL | Disponibe desde PHP 5.4.0. |
He aquí una breve explicación de las directivas de configuración.
-
windows_show_crt_warningboolean -
Esta directiva muestra las advertencias CRT de Windows cuando está establecida. Estas advertencias eran mostradas de forma predeterminada hasta PHP 5.4.0.
default_charset doesn't always set the charset for all content types, it appears to only do so for some known ones such as text/html.
If your using other content type's ensure you set the charset manually.
Tested on php 5.3.10 with application/json
Amusingly, the include_path logically includes the current directory of the running file as the last entry all the time anyways, so part of the business about shoving "." into the include_path is spurious -- it's "there" on the end all the time, at least in the 5.2.12 source (see main/fopen_wrappers.c around line 503).
This one had me goin' for a while.
If you need to use a path in your include_path that has a space in it - I found that I could make it work (in windows anyway) by setting a path like this
L:\Information Technology\Resources\lib\
in the include path like this listed below
include_path = ".;L:\Information" " Technology\Resources\lib\"
Note that there is no way to disable eval() work by using disable_functions directive, because eval() is a language construct and not a function.
Many people advise to disable such potentially-insecure functions like system(), exec(), passthru(), eval() and so on in php.ini when not running in safe mode, but eval() would still work even it listed in disable_functions.
For 'short_open_tag',
though it is marked as PHP_INI_ALL in changable column,
you should note the CHANGE_LOG column also:
PHP_INI_ALL in PHP <= 4.0.0.
PHP_INI_PERDIR in PHP < 5.3.0
So as of 4.0, it will not work if you wanna use
ini_set('short_open_tag') to change it's value on the fly.
Starting with PHP 4.4.0 (at least PHP version 4.3.10 did have old, documented behaviour) interpretation of value of "session.save_path" did change in conjunction with "save_mode" and "open_basedir" enabled.
Documented ( http://de.php.net/manual/en/ref.session.php#ini.session.save-path ):
Values of "session.save_path" should or may be **without** ending slash.
For instance:
<?php
// Valid only *before* PHP 4.4.0:
ini_set( "session.save_path", "/var/httpd/kunde/phptmp" );
?> will mean:
The directory "/var/httpd/kunde/phptmp/" will be used to write data and therefore must be writable by the web server.
Starting with PHP 4.4.0 the server complains that "/var/httpd/kunde/" is not writable.
Solution: Add an ending slash in call of ini_set (or probably whereever you set "session.save_path"), e.g.:
<?php
// Note the slash on ".....phptmp/":
ini_set( "session.save_path", "/var/httpd/kunde/phptmp/" );
?>
Hope, that does help someone.
Note that on some Unix systems (i.e. PHP 5.1.6 on Centos 5.2) include_path in php.ini should NOT be quoted.
For example, instead of
include_path='.:/usr/share/php'
use
include_path=.:/usr/share/php
Using quotes does not cause any error message, but all of your require_once() directives will fail (indicating that file could not be opened) - unless full path to target file is provided.
register_long_arrays has a very odd behavior (at least in PHP 5.2):
With register_long_arrays=Off the $GLOBALS array will not contain [_SERVER] and [_REQUEST]. They are accessible as superglobals ($_SERVER, $_REQUEST), but they disappear from the $GLOBALS array!
Warning, if you change upload_max_filesize, please note that both post_max_size and memory_limit directives may have to change too.
the ini-setting "detect_unicode" is indeed "zend.detect_unicode" (according to the phpinfo of my 5.4.4)
auto_globals_jit setting is also affecting $_REQUEST superglobal in 5.3 It is not explicitly stated in documentation.
Adding multiple directories to open_basedir:
open_basedir = "/var/www/htdocs/:/var/www/tmp/" adds both paths /var/www/htdocs/ and /var/www/tmp/. Do not forget the trailing slash, otherwise the last directory will be considered as a prefix (< 5.3.4).
On Windows you use ; as the seperator.
note that when you turn on zend.multibyte,you should change mbstring internal encoding to match the script encoding.
example:
(php.ini)
zend.multibyte = On
zend.script_encoding = utf-8
;note this:
mbstring.internal_encoding = utf-8
another example:
(php.ini)
zend.multibyte = On
(script)
<?php
declare(encoding = 'utf-8');
ini_set('mbstring.internal_encoding', 'utf-8');
//now do your work...
?>
A handy trick to pick up parse errors in test_file.php if you can't set display_errors in php.ini or use .htaccess:
<?php
error_reporting (E_ALL);
ini_set ('display_errors', true);
include('./test_file.php');
?>
"post_max_size"
"[..]This can be tracked in various ways, e.g. by passing the $_GET variable to the script processing the data, i.e. <form action="edit.php?processed=1">, and then checking if $_GET['processed'] is set."
using PHP 4.4.8 it seems that only the $_POST array will be empty in case of the file is largen than post_max_size.
so above mentioned method does not work in my case.
i need to use $_POST['processed'] instead of $_GET['processed']
If you are having trouble getting the auto_prepend_file to work with the command line interface make sure that you have set it in the cli specific php.ini and that the read permission is set correctly for that php.ini file.
to make sure that all requests use SSL you can use this in a file that is set for auto_prepend_file. This ensures that all requests are SSL
<?php
if(empty($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on' )
header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}") and exit();
?>
I wish the documentation was more clear as to whether the arg_separator.output character is automatically encoded when PHP outputs it. In other words, is "&" valid or do I need to specify the encoded character "&"? It would make sense to specify only "&" and hope that it is encoded as needed. That way the value could be read by other functions and encoded only when output to HTML, rather than having to test whether it is already encoded and decode it when necessary (for header redirection for example)
"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
I did a little experimentation on the behaviour of auto_prepend_file as the order of access wasn't clear to me from the documentation.
1. Apache checks to see if the target file exists.
2. The prepend file is called
3. The target file is called
This means that you can use auto_prepend_file to change the target file before you access it however you can't generate new files.
This is a possible solution for a problem which seems to be a php-ini-problem but is not.
If a $_POST is used with large fields e.g. textarea's with more than 120kb characters php returns a blank screen, even if the max_post_size is 8M.
This problem may be caused by an apache-module SecFilter.
Adding the following lines to the .htaccess solves the problem.
SecFilterEngine Off
SecFilterScanPOST Off
I know this is not a php-issue, but i'm still posting it here since it looks like it is a php-problem and I did not find any sites or forums offering this solution.
When display_errors is off, PHP will send an HTTP 500 result header on a fatal error. This is usefull when working with AJAX applications.
If you want to display the upload limit without knowing the server configuration, this may be useful:
<?php
function let_to_num($v){ //This function transforms the php.ini notation for numbers (like '2M') to an integer (2*1024*1024 in this case)
$l = substr($v, -1);
$ret = substr($v, 0, -1);
switch(strtoupper($l)){
case 'P':
$ret *= 1024;
case 'T':
$ret *= 1024;
case 'G':
$ret *= 1024;
case 'M':
$ret *= 1024;
case 'K':
$ret *= 1024;
break;
}
return $ret;
}
$max_upload_size = min(let_to_num(ini_get('post_max_size')), let_to_num(ini_get('upload_max_filesize')));
echo "Maximum upload file size is ".($max_upload_size/(1024*1024))."MB.";
?>
Do note however that this limit is not completely reliable; there are other factors which need to be taken into account, such as any other $_POST data and their size, the memory limit, and the script time limit. This does, however, give some rough limit, and helps you avoid "Doh!" problems where you can't figure out why your file won't upload. :)
Please be mindful, that if you plan on re-configuring / recompiling to add --enable-memory-limit support, you may need to run a 'make clean' before you run 'make'. Otherwise, you may end up with a phpinfo() that shows up with --enable-memory-limit as a configure parameter, but the memory_get_usage() function will still force a fatal error.
