He aquí una breve explicación de
las directivas de configuración.
-
include_path
string
-
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_basedir
string
-
El límite de los ficheros a los que PHP puede acceder 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 acceder al sistema de ficheros, por ejemplo, usando
include, o fopen(), se comprueba la
ubicación del fichero.
Cuando el fichero está fuera del árbol de directorio especificado, PHP rechazará acceder a él.
Todos los enlaces simbólicos se resuelven, por lo que no es posible evitar esta restricción
con un enlace simbólico. Si el fichero no existe, el enlace simbólico no podría ser
resuelto, por lo que el nombre de fichero se compara con (uno resuelto) open_basedir.
open_basedir puede afectar no sólo a las funciones del sistema de ficheros; por ejemplo,
si MySQL
está configurado para usar los controladores de mysqlnd
,
LOAD DATA INFILE
se verá afectado por open_basedir.
Mucha de la funcionalidad ampliada de PHP usa open_basedir
de esta manera.
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_SEPARATOR
como separador,
independientemente del sistema operativo.
-
doc_root
string
-
El "directorio raíz" de PHP en el servidor. Solamente usada si
no está vacía.
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_ini.cache_ttl
int
-
-
user_ini.filename
string
-
-
user_dir
string
-
El nombre base del directorio usado en un directorio principal de usuario para
ficheros PHP, por ejemplo public_html
.
-
extension_dir
string
-
En qué directorio debería buscar PHP extensiones que se pueden cargar
dinámicamente. Véase también: enable_dl,
y dl().
-
extension
string
-
Qué extensiones se cargarán dinámicamente cuando se inicie PHP.
-
zend_extension
string
-
El nombre de la extensión Zend cargable dinámicamente (por ejemplo
XDebug) cuando se inicie PHP.
-
zend_extension_debug
string
-
Variante de zend_extension
para extensiones compiladas con información de depuración antes de PHP 5.3.0.
-
zend_extension_debug_ts
string
-
Variante de zend_extension
para extensiones compiladas con información de depuración y subprocesamiento
seguro antes de PHP 5.3.0.
-
zend_extension_ts
string
-
Variante de zend_extension
para extensiones compiladas con subprocesamiento seguro antes de PHP 5.3.0.
-
cgi.check_shebang_line
boolean
-
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.discard_path
boolean
-
Si está habilitado, el binario de CGI de PHP puede ser colocado sin riesgo fuera
del árbol web, no siendo posible así eludir la seguridad de .htaccess.
-
cgi.fix_pathinfo
boolean
-
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_redirect
boolean
-
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.nph
boolean
-
Si cgi.nph está habilitado, forzará a que cgi siempre envíe Status: 200 en
cada petidión.
-
cgi.redirect_status_env
string
-
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.
-
Le indica a PHP qué tipo de encabezados usar cuando envía el código de respuesta
HTTP. Si está establecida a 0, PHP envía una cabecera "Status:" » RFC 3875
la cual es admitida por Apache y otros servidores web. Cuando esta opción
está establecida a 1, PHP enviará encabezados compatibles con la
» RFC 2616.
Si esta opción está habiltada, y está ejecutándose PHP en un entorno CGI (p.ej. PHP-FPM)
no se deberían usar las cabeceras de respuesta de estado HTTP estilo estándar RFC 2616, se debería
usar en su lugar sus equivalentes RFC 3875, p.ej., en lugar de header("HTTP/1.0 404 Not found");
se debería usar header("Status: 404 Not Found");
Déjelo establecido a 0 a menos que sepa lo que está haciendo.
-
fastcgi.impersonate
string
-
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.logging
boolean
-
Activa la identificación de la SAPI cuando se usa FastCGI. El valor predeterminado
es habilitar la identificación.