Ajustes y Configuraciones del Lenguaje PHP

Ajustes y Configuraciones PHP

Archivo de configuración PHP

El archivo de configuración (php.ini) se lee cuando se inicia el idioma. Para las versiones del servidor, el proceso de lectura ocurre cuando se inicia el servidor. En las versiones CGI y CLI, este proceso se inicia en cada invocación.

El archivo php.ini se busca en los siguientes lugares en el siguiente orden:

  1. Ubicación especificada del módulo SAPI (directiva PHPIniDir en Apache 2, opción de línea de comando -c en CGI y CLI, parámetro php_ini en NASPI, variable de entorno PHP_INI_PATH en THTTPD).
  2. Variable de entorno PHPRC. Antes de la versión 5.2.0, la validación se realizaba después de la clave de registro que se menciona a continuación.
  3. En la versión 5.2.0 y posteriores, ahora es posible establecer la ubicación del archivo php.ini para versiones en varios idiomas. La raíz de las claves de registro php depende de la naturaleza del sistema instalado, ya sea de 32 bits o de 64 bits. Si PHP y el sistema instalado son de 32 o 64 bits, use la clave [(HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP], pero si PHP es de 32 bits y el sistema instalado es de 64 bits, use la clave [[HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ PHP]]]. Si se usa el mismo sistema de bits, las siguientes claves de registro se verifican en orden: [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz], [HKEY_LOCAL_MACHINE \ SOFTWARE \ CHINE \ PHP \ KEY_LOCAL_MACHINE \ PHP] ] SOFTWARE \ PHP \ x], donde x, y y z representan versiones principales, secundarias y versiones, respectivamente. Si PHP es de 32 bits y el sistema instalado es de 64 bits, las siguientes claves de registro se escanean en orden: [HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6421Node \ PHP \ xy z] y [HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6421Node \ PHP \ xy] y [HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6421Node \ PHP \ x] donde x, y y z representan versiones principales, secundarias y de lanzamiento, respectivamente. Si hay un valor Ini File Path en cualquiera de estas claves, el primer valor encontrado se utilizará como la ubicación del archivo php.ini (solo Windows).
  4. Valor de Ini FilePath (solo Windows), [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP] o [HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ PHP].
  5. La carpeta de trabajo actual (excepto la CLI).
  6. Carpeta del servidor web (en módulos SAPI) o carpeta PHP (Windows).
  7. carpeta de windows (C: \ windows o C: \ winnt) (Windows) o la opción –with-config-file-path disponible en tiempo de compilación.

Si el archivo está php-SAPI.ini disponible, SAPI aquí es la interfaz de programación del servidor que se usa como php-cli.iniphp-apache.ini, entonces se usa en lugar del php.ini. El nombre de la API del servidor se puede especificar mediante php_sapi_name().

Nota importante en el servidor web Apache cambia el directorio a raíz al inicio, lo que provoca un intento de leer un archivo php.ini en la raíz del archivo del sistema, si hay uno disponible.

Las variables de entorno se pueden utilizar en un archivo php.ini como se muestra en el siguiente ejemplo.

Ejemplo 1: variables de entorno en un archivo php.ini

; PHP_MEMORY_LIMIT  se  toma  del  entorno 
memory_limit  =  $ { PHP_MEMORY_LIMIT }

Las páginas sobre extensiones documentan los enrutadores con los que funcionan las extensiones en un archivo php.ini, y hay una lista de enrutadores internos en las extensiones, pero no todos los enrutadores están documentados en esta guía. Puede leer los comentarios en un archivo php.ini para ver la lista completa de enrutadores en su versión de PHP, o puede buscar la última versión de un archivo php.ini en Git. Ejemplo 2: archivo de ejemplo php.ini

; cualquier  texto  en  una  línea  después de  un  punto y coma sin comillas  (;) se ignora 
[ php ] ; sección marcadores ( de texto dentro de cuadrados entre paréntesis ) son también ignorados 
; Booleanas valores pueden ser fijados a ya sea : 
; true , on , yes 
; or false , off , no , none   
          
register_globals  =  off 
track_errors  =  yes

; que  puede  incluir  cadenas  en  doble - cotizaciones 
include_path  =  ":. / usr / local / lib / php"

; las barras invertidas  se  tratan de  la  misma manera  que  cualquier  otro  carácter 
include_path  =  ".; c: \ php \ lib"

En PHP 5.1.0 ahora es posible hacer referencia a variables ‎.ini existentes desde dentro de archivos, por ‎.ini ejemplo:

open_basedir  =  $ { open_basedir }  ': / nuevo / dir' .

Escanear carpetas

Es posible configurar PHP para escanear una carpeta en busca de archivos .ini después de leer el archivo php.ini, y se puede hacer en el momento de la descarga configurando la opción --with-config-file-scan-dir. En la versión de idioma 5.2.0 y posteriores, la carpeta que borrará el idioma se puede redefinir en tiempo de ejecución configurando la variable de entorno PHP_INI_SCAN_DIR.

El escaneo se puede realizar en varias carpetas separándolas con un separador de ruta específico de la plataforma (; en Windows, NetWare y RISC OS, y: en todas las plataformas, el valor utilizado por PHP se proporciona en la constante PATH_SEPARATOR). Si se proporciona una carpeta vacía PHP_INI_SCAN_DIR, el idioma eliminará esa carpeta en el momento de la compilación con ‎--with-config-file-scan-dir.

PHP escanea todos los archivos con la extensión ‎.inidentro de cada carpeta y en orden alfabético. Puede obtener una lista de los archivos cargados y su orden llamando a la función php_ini_scanned_files()o ejecutando PHP con la extensión ‎--ini.

Suponiendo que la configuración de PHP incluye ‎--with-config-file-scan-dir=/etc/php.dy el separador de ruta es: …

$  php

El idioma cargará todos los archivos de la carpeta ‎/etc/php.d/*.ini como archivos de configuración.

$  PHP_INI_SCAN_DIR = / usr / local / etc / php.d  php

El idioma cargará todos los archivos de la carpeta ‎/usr/local/etc/php.d/*.ini como archivos de configuración.

$  PHP_INI_SCAN_DIR =: / usr / local / etc / php.d  php

El idioma cargará todos los archivos en la carpeta ‎/‎etc/php.d/*.iniy luego ‎/usr/local/etc/php.d/*.ini‎como archivos de configuración.

$  PHP_INI_SCAN_DIR = / usr / local / etc / php.d :  php

El idioma cargará todos los archivos en la carpeta ‎/usr/local/etc/php.d/*.ini y luego ‎/etc/php.d/*.ini como archivos de configuración.

Registro de cambios

VersiónFunción
7.0.0Los hashtags (#) ya no representan comentarios.
5.3.0Los comentarios (#) no deben usarse y el idioma generará una advertencia de uso obsoleto si se usan.
5.2.0El valor de la variable de entorno PHP_INI_SCAN_DIR se puede configurar para cambiar la carpeta especificada por el código de configuración.
5.1.0Es posible hacer referencia a las variables .ini existentes desde dentro de los archivos .ini.

Los archivos .user .ini. de PHP

PHP desde la versión 5.3.0 admite archivos INI para la configuración y para cada carpeta por separado, estos archivos son manejados por CGI / FastCGI SAPI, y PECL htscanner ahora se deja a favor de esta característica. Si está utilizando PHP como módulo de Apache, puede utilizar archivos ‎.htaccess para hacer lo mismo.

Además del archivo php.ini principal, el idioma escanea los archivos INI en cada carpeta. Comenzando desde la carpeta que contiene el archivo PHP solicitado por el servidor y avanzando hasta la carpeta raíz del archivo actual como se especifica en ‎$_SERVER['DOCUMENT_ROOT']‎. Si un archivo es PHP no está en la carpeta raíz, el proceso de escaneo se realiza solo en la carpeta que lo contiene.

El idioma reconoce la configuración INI de un patrón PHP_INI_PERDIRPHP_INI_USER en los archivos INI de un patrón‎ .user .ini

Controles dirigidos a INI dos user_ini.filenameuser_ini.cache_ttl utilizan los archivos INI del usuario.

La directiva user_ini.filename establece el nombre del archivo que el idioma busca en cada carpeta, y si especifica una cadena vacía como valor para este mensaje, el idioma no busca archivos en absoluto. El valor predeterminado para este enrutador es .user.ini.

El enrutador controla user_ini.cache_ttl la frecuencia con la que se leen INI los archivos del usuario; el valor predeterminado es 300 segundos(5 minutos).

Estableciendo la configuración

Estos modos especifican dónde y cuándo se puede establecer o no el indicador de PHP, y cada enrutador de esta guía apunta a uno de estos modos. Por ejemplo, algunas configuraciones dentro del código PHP se especifican usando la función, ini_set()‎ mientras que otras requieren el uso de un archivo php.inihttpd.conf.

Por ejemplo: un enrutador output_buffering está en posición, por PHP_INI_PERDIR lo que no se puede configurar usando la función, ini_set()‎ pero un enrutador display_errors está en posición, por lo que PHP_INI_ALL se puede configurar en cualquier lugar incluso por la función ini_set()‎.

Definición de modos PHP_INI_ *.

PropiedadFunción
PHP_INI_USEREl elemento se puede configurar en el código de usuario; cómo usar la función ini_set () o en el registro de Windows. En PHP 5.3 y en posteriores, ahora es posible configurar el elemento en el archivo .user .ini.
PHP_INI_PERDIREl portlet se puede configurar en php.ini, .htaccess, httpd.conf o .user .ini (desde la versión 5.3)
PHP_INI_SYSTEMEl elemento se puede configurar en php.ini o httpd.conf
PHP_INI_ALLEl elemento se puede configurar en cualquier lugar.

Cómo cambiar los ajustes de configuración

Ejecute PHP como un módulo de Apache. Cuando se usa PHP como módulo Apache, los ajustes de configuración también se pueden cambiar usando directivas en los archivos de configuración del servidor Apache (por ejemplo httpd.conf) y archivos ‎.htaccess, y para hacer esto necesitará » AllowOverride Options» o » » permisos AllowOverride All.

Hay varias directivas de Apache que le permiten cambiar la configuración de idioma desde los archivos de configuración del servidor Apache. Para ver si el tipo de enrutador PHP_INI_ALLPHP_INI_PERDIRPHP_INI_SYSTEM informados sobre el anexo , que muestra una lista de Bugeat php.ini.

php_value name value

Establezca el valor del enrutador especificado. Se puede usar con tipos de vector PHP_INI_ALLPHP_INI_PERDIR, para desarmar valores anteriores, use el valor none.

Nota: no se utiliza php_value para establecer valores booleanos. php_flag(ver más abajo) debe usarse para este propósito.

php_flag name on|off

Se utiliza para especificar un vector de inicialización lógico. Sólo se puede usar con el tipo PHP_INI_ALLPHP_INI_PERDIR.

php_admin_value name value

Establece el valor del vector especificado, no se puede usar en archivos ‎.htaccess y ningún tipo de vector puede ser reemplazado por un archivo ‎.htaccess o función ini_set()‎ si lo especifica php_admin_value. Para desarmar los valores anteriores use el valor none.

php_admin_flag name on|off

Se utiliza para establecer un vector de inicialización lógico, no se puede utilizar en archivos ‎.htaccess y ningún tipo de vector puede ser anulado por un archivo ‎.htaccess o función ini_set()‎ si lo especifica php_admin_flag.

Ejemplo 3: ejemplo de un archivo de configuración de Apache.

< IfModule  mod_php5 . c > 
  php_value  include_path  ".: / usr / local / lib / php" 
  motor php_admin_flag  en </ IfModule > < IfModule mod_php4 . c > php_value include_path ".: / usr / local / lib / php" motor php_admin_flag en </ IfModule > 

Atención: Las constantes de PHP no existen fuera del lenguaje. Por ejemplo, las constantes de PHP como E_ALL y E_NOTICE no se pueden usar en el archivo httpd.conf para establecer los vectores de error_reporting, ya que no tendrán sentido y se procesarán en 0. Sin embargo, las los valores de máscara de bits se pueden usar, estas constantes son válidas para su uso en el archivo php.ini.

Cambio de la configuración de PHP mediante el registro de Windows

La configuración se puede modificar cuando se usa PHP en Windows y por carpeta usando el registro del sistema Los valores de configuración se almacenan en la clave de registro HKLM \ SOFTWARE \ PHP \ Valores por directorio en las subclaves asociadas con el nombre de ruta. Por ejemplo, los valores de configuración para la carpeta c: \ inetpub \ wwwroot se almacenan en la clave HKLM \ SOFTWARE \ PHP \ Per Directory Values ​​\ c \ inetpub \ wwwroot, y las configuraciones para esta carpeta están disponibles para cualquier código que se ejecuta en esa carpeta o en sus subcarpetas secundarias.

Los valores dentro de la clave deben tener el nombre del vector de configuración específico del idioma y el valor de la cadena. Las constantes de PHP no se pueden usar como valores porque no se interpretarán, solo los valores de configuración en PHP_INI_USER están sujetos a cambios de esta manera, no los valores en PHP_INI_PERDIR.

Interfaces del idioma

Independientemente de cómo se ejecute PHP, el ini_set()‎. Consulte la documentación de la función en la página para ini_set()‎obtener más información.

Si desea ver una lista completa de configuraciones en su sistema operativo con sus valores actuales, puede ejecutar la función phpinfo() y revisar el resultado. También puede acceder a los valores dependientes de un enrutador en particular en tiempo de ejecución de código usando ini_get()‎get_cfg_var()‎.