Articulo de referencia

PHP

{{cite web | last=Lerdorf | first=Rasmus | title=PHP on Hormones – history of PHP presentation by Rasmus Lerdorf given at the MySQL Conference in Santa Clara, California | ...

Escucha este artículo

PHP es un lenguaje de scripting de propósito general orientado al desarrollo web . [ 11 ] Fue creado por el programador danés-canadiense Rasmus Lerdorf en 1993 y lanzado en 1995. [ 12 ] [ 13 ] La implementación de referencia de PHP ahora la produce el Grupo PHP. [ 14 ] PHP era originalmente una abreviatura de Personal Home Page , pero ahora significa el acrónimo recursivo PHP: Hypertext Preprocessor . [ 15 ] : 14

El código PHP se procesa normalmente en un servidor web mediante un intérprete de PHP implementado como módulo , demonio o ejecutable CGI ( Common Gateway Interface ). En un servidor web, el resultado de la interpretación y ejecución del código PHP —que puede ser cualquier tipo de datos, como HTML generado o datos de imágenes binarias— puede constituir la totalidad o parte de una respuesta HTTP . Existen diversos sistemas de plantillas web , sistemas de gestión de contenido web y frameworks web que pueden utilizarse para orquestar o facilitar la generación de dicha respuesta. PHP puede utilizarse para tareas de programación fuera del contexto web, aunque su uso fuera de este ámbito es poco frecuente. El código PHP también puede ejecutarse directamente desde la línea de comandos .

El intérprete estándar de PHP, basado en el motor Zend Engine , es software libre distribuido bajo la licencia PHP . PHP ha sido ampliamente adaptado y puede implementarse en la mayoría de los servidores web, en una variedad de sistemas operativos y plataformas.

Historia

En sus inicios, el lenguaje PHP evolucionó sin una especificación o estándar formal escrito, y la implementación original actuó como el estándar de facto que otras implementaciones pretendían seguir.

Rasmus Lerdorf , creador de PHP; y Andi Gutmans y Zeev Suraski , creadores del Zend Engine.

Historia temprana (1993 a 1997)

El desarrollo de PHP comenzó en 1993 [ 12 ] cuando Rasmus Lerdorf escribió varios programas de Interfaz de Puerta de Enlace Común (CGI) en C , [ 16 ] [ 17 ] que utilizó para mantener su página web personal . Los extendió para que funcionaran con formularios HTML y se comunicaran con bases de datos , y llamó a esta implementación "Intérprete de Página Web/Formularios Personal" o PHP/FI.

Un ejemplo de la sintaxis temprana de PHP : [ 18 ]

<!--incluir /text/header.html--><!--getenv HTTP_USER_AGENT--> <!--if substr $exec_result Mozilla--> ¡Oye, estás usando Netscape! < p > <!--endif--><!--sql base de datos select * from table where user='$username'--> <!--ifless $numentries 1--> Lo sentimos, ese registro no existe < p > <!--endif exit--> ¡Bienvenido <!--$user--> ! < p > Tiene <!--$index:0--> créditos restantes en su cuenta. < p ><!--incluir /text/footer.html-->

PHP/FI se podía usar para construir aplicaciones web simples y dinámicas . Para acelerar la notificación de errores y mejorar el código, Lerdorf anunció inicialmente el lanzamiento de PHP/FI como "Personal Home Page Tools (PHP Tools) versión 1.0" en el grupo de discusión de Usenet comp.infosystems.www.authoring.cgi el 8 de junio de 1995. [ 1 ] [ 19 ] Este lanzamiento incluía funcionalidades básicas como variables tipo Perl , manejo de formularios y la capacidad de incrustar HTML . Para entonces, la sintaxis había cambiado para parecerse a la de Perl , pero era más simple, más limitada y menos consistente. [ 20 ] [ 14 ]

PHP en sus inicios nunca tuvo la intención de ser un nuevo lenguaje de programación ; más bien, creció de forma orgánica, y Lerdorf comentó retrospectivamente: "No sé cómo detenerlo [...] nunca hubo intención de escribir un lenguaje de programación [...] no tengo ni idea de cómo escribir un lenguaje de programación [...] simplemente seguí añadiendo el siguiente paso lógico en el camino". [ 21 ] Se comenzó a formar un equipo de desarrollo y, después de meses de trabajo y pruebas beta , se lanzó oficialmente PHP/FI 2 en noviembre de 1997. [ 22 ]

El hecho de que PHP no fuera diseñado originalmente, sino que se desarrollara orgánicamente, ha dado lugar a nombres de funciones inconsistentes y a un orden inconsistente de sus parámetros. [ 23 ] En algunos casos, los nombres de las funciones se eligieron para que coincidieran con las bibliotecas de bajo nivel que PHP estaba "envolviendo", [ 24 ] mientras que en algunas versiones muy tempranas de PHP la longitud de los nombres de las funciones se usaba internamente como una función hash , por lo que los nombres se elegían para mejorar la distribución de los valores hash . [ 25 ]

PHP 3 y 4 (1998 a 2004)

Un ejemplo de código PHP para el sistema de gestión de contenidos WordPress .

Zeev Suraski y Andi Gutmans reescribieron el analizador sintáctico en 1997 y sentaron las bases de PHP  3, cambiando el nombre del lenguaje al acrónimo recursivo PHP: Hypertext Preprocessor . [ 14 ] [ 26 ] Posteriormente,  comenzaron las pruebas públicas de PHP 3 y el lanzamiento oficial tuvo lugar en junio de 1998. Suraski y Gutmans luego iniciaron una nueva reescritura del núcleo de PHP, produciendo el Zend Engine en 1999. [ 27 ] También fundaron Zend Technologies en Ramat Gan , Israel. [ 14 ]

El 22 de mayo de 2000 se lanzó PHP 4.0, impulsado por Zend Engine 1.0. [ 14 ] En agosto de 2008, esta rama había alcanzado la versión 4.4.9. PHP  4 ya no está en desarrollo ni se planea lanzar actualizaciones de seguridad. [ 28 ] [ 29 ]

Primeras versiones de PHP 5 (2004 a 2006)

El 1 de julio de 2004 se lanzó PHP 5.0, impulsado por el nuevo Zend Engine 2.0. [ 14 ] PHP  5.0 incluyó cambios significativos en el lenguaje, sobre todo un enfoque renovado de la programación orientada a objetos , así como iteradores y excepciones . [ 30 ]

PHP 5.1 y PHP 5.2 se lanzaron en los años siguientes, añadiendo pequeñas mejoras y nuevas características, como la extensión PHP Data Objects (PDO) (que define una interfaz ligera y consistente para acceder a las bases de datos). En 2008, PHP  5.x se convirtió en la única versión estable en desarrollo.

Muchos proyectos de código abierto de alto perfil dejaron de dar soporte a PHP  4 en el código nuevo a partir del 5 de febrero de 2008, debido a la iniciativa GoPHP5, [ 31 ] proporcionada por un consorcio de desarrolladores de PHP que promovía la transición de PHP  4 a PHP  5. [ 32 ] [ 33 ]

PHP 6 y Unicode

Las funciones de cadena nativas de PHP solo funcionaban con bytes sin procesar, lo que dificultaba su uso con codificaciones de caracteres multibyte . [ 34 ] [ 35 ] En 2005, se inició un proyecto liderado por Andrei Zmievski para incorporar soporte nativo para Unicode en todo PHP, integrando la biblioteca International Components for Unicode (ICU) y representando internamente las cadenas de texto como UTF-16 . [ 36 ] Dado que esto implicaría cambios importantes tanto en la estructura interna del lenguaje como en el código del usuario, se planeó lanzar esta funcionalidad como la versión 6.0 del lenguaje, junto con otras características importantes que estaban en desarrollo. [ 37 ]

Sin embargo, la escasez de desarrolladores que comprendían los cambios necesarios y los problemas de rendimiento derivados de la conversión a y desde UTF-16, que rara vez se utiliza en un contexto web, provocaron retrasos en el proyecto. [ 38 ] Como resultado,  se creó una versión de PHP 5.3 en 2009 y, en marzo de 2010, el proyecto en su forma actual se abandonó oficialmente y  se preparó una versión de PHP 5.4 para contener la mayoría de las características no Unicode restantes de PHP  6. [ 39 ] Las esperanzas iniciales eran que se formara un nuevo plan para la integración de Unicode, pero para 2014 no se había adoptado ninguno.

Posteriormente, PHP 5 (2009 a 2014)

Debido a que contenía características originalmente destinadas a formar parte de la versión 6.0, PHP 5.3 fue una versión significativa, que agregó soporte para espacios de nombres , cierres , enlace estático tardío , [ 40 ] [ 41 ] y muchas correcciones y mejoras a las funciones estándar.

Con el abandono oficial de la rama Unicode, se adoptó un nuevo proceso de lanzamiento en 2011, planificando un ciclo de lanzamiento anual y una clara distinción entre "lanzamientos de características" (xyz a x.y+1.z) y "lanzamientos principales" (xyz a x+1.0.0). [ 42 ] Las características restantes que se habían planificado para el lanzamiento 6.0 se incluyeron en PHP 5.4, lanzado en marzo de 2012, como la compatibilidad con traits y una nueva "sintaxis de matriz corta". A esto le siguieron más cambios incrementales en PHP 5.5 (junio de 2013) y 5.6 (agosto de 2014).

Para las versiones 5.3 y 5.4 de PHP, las únicas distribuciones binarias disponibles para Microsoft Windows eran compilaciones IA-32 de 32 bits , [ 43 ] [ 44 ] que requerían el modo de compatibilidad de 32 bits de Windows al usar Internet Information Services (IIS) en una plataforma Windows de 64 bits. La versión 5.5 de PHP puso a disposición las compilaciones x86-64 de 64 bits para Microsoft Windows. [ 45 ]

El soporte de seguridad oficial para PHP 5.6 finalizó el 31 de diciembre de 2018. [ 46 ]

PHP 7.x (2015 a 2019)

Durante 2014 y 2015, se desarrolló una nueva versión principal de PHP, PHP  7.0. La numeración de esta versión generó cierto debate entre los desarrolladores internos. [ 47 ] Si bien los  experimentos de Unicode de PHP 6 nunca se publicaron, varios artículos y títulos de libros hacían referencia a los  nombres de PHP 6, lo que podría haber causado confusión si una nueva versión reutilizara el nombre. [ 48 ] Después de una votación,  se eligió el nombre PHP 7. [ 49 ]

La base de PHP  7.0 fue una rama de PHP que originalmente se denominó PHP next generation ( phpng ). Fue escrita por Dmitry Stogov, Xinchen Hui y Nikita Popov, [ 50 ] y tenía como objetivo optimizar el rendimiento de PHP mediante la refactorización del Zend Engine, manteniendo una compatibilidad de lenguaje casi completa. [ 51 ] Para el 14 de julio de 2014, las pruebas de rendimiento basadas en WordPress , que sirvieron como el conjunto principal de pruebas de rendimiento para el proyecto phpng, mostraron un aumento de rendimiento de casi el 100 %. Los cambios de phpng facilitan la mejora del rendimiento en futuras versiones, ya que las estructuras de datos más compactas y otros cambios se consideran más adecuados para una migración exitosa a un compilador justo a tiempo (JIT). [ 52 ] Debido a los cambios significativos, el Zend Engine rediseñado se denominó Zend Engine 3 , sucediendo al Zend Engine 2 utilizado en PHP  5.x. [ 53 ]

PHP 7.0 también incluyó cambios que no eran retrocompatibles, como permitía para las "versiones principales" bajo el esquema de versiones acordado en 2011. [ 42 ] Los cambios en el lenguaje central incluyeron un manejo más consistente de la desreferenciación de variables, [ 54 ] un comportamiento más predecible de la foreachinstrucción , [ 55 ] y consistencia de plataforma de desplazamientos bit a bit [ 56 ] y conversión de punto flotante a entero. [ 56 ] [ 57 ] Varias interfaces de programación de aplicaciones de servidor (SAPI) y extensiones sin mantenimiento o en desuso se eliminaron del núcleo de PHP, en particular la mysqlextensión heredada. [ 58 ] También se eliminaron otras características heredadas, como los delimitadores de estilo ASP <%y y . [ 59 ]%><script language="php"> ... </script>

PHP 7.0 marcó el comienzo de una expansión en el sistema de tipos de PHP. En PHP 5.x, solo los parámetros de función podían tener declaraciones de tipo, pero esto se extendió a los tipos de retorno de función en 7.0, [ 60 ] y a las propiedades de objeto en 7.4 [ 61 ] Los tipos expresables también se expandieron, con tipos escalares (entero, flotante, cadena y booleano) en 7.0; [ 62 ]iterable tipo, [ 63 ] tipos anulables, [ 64 ] y voidtipo de retorno . [ 65 ] todos en 7.1; y el objecttipo en 7.2 [ 66 ]

Otros cambios en este período tenían como objetivo agregar expresividad al lenguaje, como los operadores ??( null coalesce ) [ 67 ] y de comparación de tres vías<=> "spaceship" [ 68 ] en 7.0; nueva sintaxis para la desreferenciación de matrices [ 69 ] y captura de múltiples tipos de excepciones [ 70 ] en PHP 7.1; sintaxis Heredoc y Nowdoc más flexible [ 71 ] en 7.3; y el operador de asignación de coalescencia nula [ 72 ] en 7.4.

PHP 8.x (a partir de 2020)

PHP  8.0 se lanzó el 26 de noviembre de 2020 como una versión principal con cambios incompatibles con versiones anteriores. [ 73 ] [ 74 ]

Uno de los cambios más destacados fue la incorporación de un compilador JIT , que puede proporcionar mejoras sustanciales en el rendimiento para algunos casos de uso. [ 75 ] [ 76 ] Se esperaban mejoras sustanciales más para operaciones de tipo matemático que para casos de uso comunes de desarrollo web. [ 77 ] Además, la ventaja de rendimiento del compilador JIT ofrece el potencial de trasladar parte del código de C a PHP. [ 78 ]

Una adición significativa al lenguaje en la versión 8.0 son los atributos , que permiten agregar metadatos a elementos del programa como clases, métodos y parámetros. [ 73 ] Las versiones posteriores agregaron atributos integrados que cambian el comportamiento del lenguaje, como el atributo en PHP 8.2, [ 79 ] en PHP 8.3, [ 80 ] en PHP 8.4, [ 81 ] y los atributos y en PHP 8.5. [ 82 ] [ 83 ] [ 84 ]#[\SensitiveParameter]#[\Override]#[\Deprecated]#[\NoDiscard]#[\DelayedTargetValidation]

Una extensión significativa del sistema de tipos del lenguaje es la adición de tipos compuestos: tipos de unión en PHP 8.0 (por ejemplo, que significa "entero o cadena"), [ 85 ] tipos de intersección en PHP 8.1 (por ejemplo, que significa que el valor debe implementar las interfaces y ), [ 86 ] y tipos de forma normal disyuntiva (DNF) en PHP 8.2 (uniones de intersecciones, como ). [ 87 ] Se han añadido palabras clave de tipo especiales adicionales, como y en PHP 8.0, [ 73 ] (un tipo inferior que indica que una función nunca devuelve) en PHP 8.1, [ 88 ] y , , y como tipos independientes en PHP 8.2. [ 89 ] [ 90 ]int|stringTraversable&CountableTraversableCountablearray|(Traversable&Countable)mixedstaticnevernullfalsetrue

La adición de un sistema de tipos enriquecido forma parte de una tendencia general hacia un lenguaje más estricto, y PHP 8.0 incluyó cambios incompatibles en el manejo de comparaciones de cadenas a números, [ 91 ] cadenas numéricas, [ 92 ] y firmas de métodos incompatibles. [ 93 ] Las versiones posteriores han introducido avisos de obsolescencia para comportamientos que se planean como cambios incompatibles en una futura versión principal, como pasar nullparámetros de funciones internas no anulables [ 94 ] y hacer referencia a propiedades que no se han declarado en la clase. [ 95 ]

Historial de lanzamientos

A partir del 28 de junio de 2011, el Equipo de Desarrollo de PHP implementó un cronograma para el lanzamiento de nuevas versiones de PHP. [ 42 ] Bajo este sistema, debería haber al menos un lanzamiento cada mes. Una vez al año, debería haber un lanzamiento menor que podría incluir nuevas características. Cada lanzamiento menor debería tener soporte durante al menos dos años con correcciones de seguridad y errores, seguido de al menos un año solo de correcciones de seguridad, para un total de un proceso de lanzamiento de tres años para cada lanzamiento menor. No se deben introducir nuevas características, a menos que sean pequeñas y autocontenidas, en un lanzamiento menor durante el proceso de lanzamiento de tres años. Una RFC de 2024 extendió la duración del período de solo correcciones de seguridad a dos años, fijó todas las fechas de fin de vida útil al 31 de diciembre y eliminó la excepción que permitía que se introdujeran características "pequeñas y autocontenidas" en versiones de parche. [ 193 ]

Prevalencia de versiones obsoletas

W3Techs informa que a partir de noviembre de 2025 (aproximadamente tres años después de que se descontinuara PHP 7 y 23 meses después del lanzamiento de PHP 8.3), versiones sin soporte como PHP 7 todavía son utilizadas por más de la mitad de los sitios web PHP , que están desactualizados y se sabe que son inseguros. [ 194 ] [ 195 ] Esto incluye al 9,7% de los sitios web PHP que utilizan el aún más desactualizado (descontinuado hace 7 años) e inseguro PHP 5, lanzado hace más de dos décadas.    

Mascota

El elePHPant, la mascota de PHP

La mascota del proyecto PHP es elePHPant , un elefante azul con el logotipo de PHP en su costado, diseñado por Vincent Pontier [ 196 ] en 1998. [ 197 ] "Las letras (PHP) formaban la figura de un elefante si se observaban de lado." [ 198 ]

El elePHPant a veces tiene un color diferente cuando está en forma de peluche . [ 199 ] Se han hecho muchas variaciones de esta mascota física a lo largo de los años. Solo los elePHPants basados ​​en el diseño original de Vincent Pontier son considerados oficiales por la comunidad. [ 200 ] Estos son coleccionables y algunos de ellos son extremadamente raros. [ 201 ]

Sintaxis

Una aplicación "Hola, mundo" en PHP 7.4 ejecutándose en su servidor de desarrollo integrado.

El siguiente programa "¡Hola, mundo!" está escrito en código PHP incrustado en un documento HTML :

< ! DOCTYPE html > <html> <head> <title> Programa PHP " Hola , Mundo ! " </title> </head> <body> <p> < ? = ' Hola , Mundo ! ' ? > </p> </body> </html>

El intérprete de PHP solo ejecuta código PHP dentro de sus delimitadores . Todo lo que esté fuera de sus delimitadores no es procesado por PHP, aunque el texto que no es PHP aún puede estar sujeto a estructuras de control descritas en el código PHP. <?phpse utiliza para abrir y ?>cerrar secciones PHP. <?=Existe una abreviatura, que es una abreviatura de . [ 15 ] : 22–23, 46 También existe la forma abreviada , que hace que los archivos de script sean menos portátiles ya que el soporte puede deshabilitarse en la configuración local de PHP. El Grupo PHP desaconseja la forma abreviada por esta razón. [ 202 ] [ 203 ] Por el contrario, no hay ninguna recomendación en contra de la etiqueta corta echo . [ 204 ] Antes de PHP 5.4.0, la sintaxis corta para solo funciona con la configuración habilitada, mientras que para PHP 5.4.0 y posteriores siempre está disponible. [ 205 ] [ 206 ] [ 202 ] El propósito de los delimitadores es separar el código PHP del contenido que no es PHP, como el código JavaScript o el marcado HTML. [ 207 ]<?phpecho<?<?= echoshort_open_tag 

La primera forma de delimitadores, <?phpy ?>, en XHTML y otros documentos XML , crea instrucciones de procesamiento XML correctamente formadas. [ 208 ] Esto significa que la mezcla resultante de código PHP y otro marcado en el archivo del lado del servidor es en sí mismo XML bien formado.

Las variables se anteponen con el símbolo del dólar y no es necesario especificar el tipo  de antemano. PHP 5 introdujo las declaraciones de tipo que permiten a las funciones forzar que sus parámetros sean objetos de una clase específica, matrices, interfaces o funciones de devolución de llamada . Sin embargo, antes de PHP  7, las declaraciones de tipo no se podían usar con tipos escalares como enteros o cadenas. [ 62 ]

A continuación se muestra un ejemplo de cómo se declaran e inicializan las variables en PHP.

<?php $name = 'John' ; // variable de tipo cadena que se declara e inicializa $age = 18 ; // variable de tipo entero que se declara e inicializa $height = 5.3 ; // variable de tipo doble que se declara e inicializa echo $name . ' es ' . $height . "m de altura \n " ; // concatenando variables y cadenas echo " $name tiene $age años." ; // interpolando variables a cadena ?>

A diferencia de los nombres de funciones y clases, los nombres de variables distinguen entre mayúsculas y minúsculas. Tanto las cadenas entre comillas dobles ("") como las cadenas heredoc permiten interpolar el valor de una variable en la cadena. [ 209 ] PHP trata los saltos de línea como espacios en blanco, al estilo de un lenguaje de formato libre , y las sentencias terminan con un punto y coma. [ 210 ] PHP tiene tres tipos de comentarios : /* */marcan comentarios de bloque y en línea; //o #se utilizan para comentarios de una sola línea. La echosentencia es una de las varias palabras clave que PHP proporciona para mostrar texto. [ 15 ] : 24–26

En cuanto a palabras clave y sintaxis del lenguaje, PHP es similar a la sintaxis de estilo C. ifLas condiciones, los bucles fory whilelos retornos de funciones son similares en sintaxis a lenguajes como C, C++, C#, Java y Perl. [ 211 ] [ 212 ] [ 213 ]

Tipos de datos

PHP es de tipado flexible . Almacena enteros en un rango dependiente de la plataforma, ya sea como un entero con signo de 32, 64 o 128 bits equivalente al tipo `long` del lenguaje C. Los enteros sin signo se convierten a valores con signo en ciertas situaciones, lo que difiere del comportamiento de muchos otros lenguajes de programación. [ 214 ] Las variables enteras se pueden asignar utilizando notaciones decimal (positiva y negativa), octal , hexadecimal y binaria . [ 215 ]

Los números de punto flotante también se almacenan en un rango específico de la plataforma. Se pueden especificar usando notación de punto flotante o dos formas de notación científica . [ 216 ] PHP tiene un tipo booleano nativo similar a los tipos booleanos nativos en Java y C++ . Usando las reglas de conversión de tipos booleanos, los valores distintos de cero se interpretan como verdadero y cero como falso, como en Perl y C++. [ 216 ]

El tipo de dato nulo representa una variable que no tiene valor; NULLes el único valor permitido para este tipo de dato. [ 216 ]

Las variables del tipo "recurso" representan referencias a recursos de fuentes externas. Estas suelen ser creadas por funciones de una extensión específica y solo pueden ser procesadas por funciones de la misma extensión; ejemplos de ello son los recursos de archivos, imágenes y bases de datos. [ 216 ]

Los arrays pueden contener elementos de cualquier tipo que PHP pueda manejar, incluyendo recursos, objetos e incluso otros arrays. El orden se conserva en listas de valores y en hashes con claves y valores, y ambos pueden mezclarse. [ 216 ] PHP también admite cadenas , que pueden usarse con comillas simples, comillas dobles, sintaxis nowdoc o heredoc . [ 217 ]

La biblioteca estándar de PHP (SPL) intenta resolver problemas estándar e implementa interfaces y clases de acceso a datos eficientes. [ 218 ]

Funciones

PHP define una gran variedad de funciones en el lenguaje principal, y muchas también están disponibles en diversas extensiones; estas funciones están bien documentadas en la documentación en línea de PHP. [ 219 ] Sin embargo, la biblioteca integrada presenta una amplia variedad de convenciones de nomenclatura e inconsistencias asociadas, como se describe en el historial anterior.

El desarrollador puede definir funciones personalizadas:

function myAge ( int $birthYear ) : string { // calcula la edad restando el año de nacimiento del año actual. $yearsOld = date ( 'Y' ) - $birthYear ;// Devuelve la edad en una cadena descriptiva. return $yearsOld . ( $yearsOld == 1 ? ' año' : ' años' ); }echo 'Actualmente tengo ' . miEdad ( 1995 ) . ' años.' ;

A partir de 2026 , el resultado del programa de ejemplo anterior es "Actualmente tengo 31 años".

En lugar de punteros a funciones , las funciones en PHP pueden referenciarse mediante una cadena que contiene su nombre. De esta manera, las funciones PHP normales pueden usarse, por ejemplo, como callbacks o dentro de tablas de funciones . [ 220 ] Las funciones definidas por el usuario pueden crearse en cualquier momento sin ser prototipadas . [ 219 ] [ 220 ] Las funciones pueden definirse dentro de bloques de código, lo que permite una decisión en tiempo de ejecución sobre si una función debe definirse o no. Hay una función que determina si una función con un nombre dado ya ha sido definida. Las llamadas a funciones deben usar paréntesis, con la excepción de las funciones constructorasfunction_exists de clase sin argumentos llamadas con el operador PHP , en cuyo caso los paréntesis son opcionales.new

Desde PHP  4.0.1 create_function(), un envoltorio ligero alrededor de eval()permitía crear funciones PHP normales durante la ejecución del programa; fue obsoleto en PHP  7.2 y eliminado en PHP  8.0 [ 221 ] en favor de la sintaxis para funciones anónimas o " cierres " [ 222 ] que pueden capturar variables del ámbito circundante, que se agregó en PHP  5.3. La sintaxis abreviada de flecha se agregó en PHP  7.4: [ 223 ]

función getAdder ( $x ) { return fn ( $y ) => $x + $y ; }$adder = getAdder ( 8 ); echo $adder ( 2 ); // imprime "10"

En el ejemplo anterior, getAdder()la función crea un cierre utilizando el argumento pasado $x, que toma un argumento adicional $y, y devuelve el cierre creado a quien la llama. Dicha función es un objeto de primera clase, lo que significa que se puede almacenar en una variable, pasar como parámetro a otras funciones, etc. [ 224 ]

A diferencia de otros lenguajes de tipado dinámico, PHP admite declaraciones de tipo en los parámetros de las funciones, las cuales se aplican en tiempo de ejecución. Esto se ha admitido para clases e interfaces desde PHP  5.0, para arreglos desde PHP  5.1, para "callables" desde PHP  5.4 y para tipos escalares (entero, flotante, cadena y booleano) desde PHP  7.0. [ 62 ] PHP  7.0 también tiene declaraciones de tipo para los tipos de retorno de las funciones, expresadas colocando el nombre del tipo después de la lista de parámetros, precedido por dos puntos. [ 60 ] Por ejemplo, la getAdderfunción del ejemplo anterior podría anotarse con tipos como se muestra en PHP  7:

función getAdder ( int $x ) : Closure { return fn ( int $y ) : int => $x + $y ; }$adder = getAdder ( 8 ); echo $adder ( 2 ); // imprime "10" echo $adder ( null ); // lanza una excepción porque se pasó un tipo incorrecto $adder = getAdder ([]); // también lanzaría una excepción

Por defecto, las declaraciones de tipos escalares siguen principios de tipado débil. Así, por ejemplo, si el tipo de un parámetro es int, PHP permitiría que se pasaran a esa función no solo enteros, sino también cadenas numéricas convertibles, números de coma flotante o booleanos, y los convertiría. [ 62 ] Sin embargo, PHP  7 tiene un modo de "tipado estricto" que, cuando se utiliza, impide dichas conversiones para las llamadas a funciones y los retornos dentro de un archivo. [ 62 ]

objetos PHP

La funcionalidad básica de programación orientada a objetos se agregó en PHP  3 y se mejoró en PHP  4. [ 14 ] Esto permitió que PHP obtuviera mayor abstracción, facilitando las tareas creativas para los programadores que utilizan el lenguaje. El manejo de objetos se reescribió por completo para PHP  5, ampliando el conjunto de características y mejorando el rendimiento. [ 225 ] En versiones anteriores de PHP, los objetos se manejaban como tipos de valor . [ 225 ] La desventaja de este método era que el código tenía que hacer un uso intensivo de las variables de "referencia" de PHP si quería modificar un objeto que se le pasaba en lugar de crear una copia del mismo. En el nuevo enfoque, los objetos se referencian por identificador , y no por valor. [ 226 ]

PHP 5 introdujo variables y métodos miembros  privados y protegidos , junto con clases abstractas , clases finales , métodos abstractos y métodos finales . También introdujo una forma estándar de declarar constructores y destructores , similar a la de otros lenguajes orientados a objetos como C++ , y un modelo estándar de manejo de excepciones . Además, PHP 5 agregó interfaces y permitió la implementación de múltiples interfaces. Existen interfaces especiales que permiten que los objetos interactúen con el sistema de tiempo de ejecución. Los objetos que implementan ArrayAccess se pueden usar con la sintaxis de array y los objetos que implementan Iterator o IteratorAggregate se pueden usar con la construcción del lenguaje . No hay una función de tabla virtual en el motor, por lo que las variables estáticas se enlazan con un nombre en lugar de una referencia en tiempo de compilación. [ 227 ] foreach

Si el desarrollador crea una copia de un objeto usando la palabra reservada clone, el motor de Zend comprobará si __clone()se ha definido un método. Si no, llamará a un método predeterminado __clone()que copiará las propiedades del objeto. Si __clone()se define un método, este se encargará de establecer las propiedades necesarias en el objeto creado. Para mayor comodidad, el motor proporcionará una función que importa las propiedades del objeto de origen, de modo que el programador pueda comenzar con una réplica por valor del objeto de origen y solo sobrescribir las propiedades que necesiten modificarse. [ 228 ]

La visibilidad de las propiedades y métodos de PHP se define mediante las palabras clavepublic , private, y protected. El valor predeterminado es público, si solo se usa varvar ; es un sinónimo de public. Los elementos declarados publicpueden ser accedidos en cualquier lugar. protectedlimita el acceso a las clases heredadas (y a la clase que define el elemento). privatelimita la visibilidad solo a la clase que define el elemento. [ 229 ] Los objetos del mismo tipo tienen acceso a los miembros privados y protegidos de los demás aunque no sean la misma instancia. [ 230 ]

Ejemplo

El siguiente es un ejemplo básico de programación orientada a objetos en PHP  8:

<?phpclase abstracta Usuario{cadena protegida $nombre ;función pública __construct ( cadena $name ){// convierte la primera letra en mayúscula y el resto en minúscula$this -> name = ucfirst ( strtolower ( $name ));}función pública saludar () : cadena{devolver "Hola, mi nombre es " . $this -> nombre ;}función pública abstracta trabajo () : cadena ;}La clase Estudiante extiende Usuario{función pública __construct ( cadena $name , cadena privada $course ){padre :: __construct ( $name );}función pública trabajo () : cadena{devolver "Aprendo " . $this -> curso ;}}El profesor de la clase extiende Usuario{función pública __construct ( cadena $name , matriz privada $teachingCourses ){padre :: __construct ( $name );}función pública trabajo () : cadena{return "Yo enseño " . implode ( ", " , $this -> teachingCourses );}}$estudiantes = [Nueva estudiante ( "Alice" , "Informática" )Nuevo estudiante ( "Bob" , "Informática" )Nuevo estudiante ( "Charlie" , "Estudios empresariales" )];$profesores = [Nuevo profesor ( "Dan" , [ "Ciencias de la Computación" , "Seguridad de la Información" ]),Nueva profesora ( "Erin" , [ "Informática" , "Programación de gráficos 3D" ]),Nuevo profesor ( "Frankie" , [ "Marketing online" , "Estudios empresariales" , "Comercio electrónico" ]),];para cada ([ $estudiantes , $profesores ] como $usuarios ) {echo $users [ 0 ] :: class . "s: \n " ;array_walk ( $users , function ( User $user ) {echo " { $user -> greet () } , { $user -> job () } \n " ;});}

Este programa produce la siguiente salida:

Estudiantes: Hola, me llamo Alice, estudio Informática. Hola, me llamo Bob, estudio Informática. Hola, me llamo Charlie, estudio Administración de Empresas . Profesores: Hola, me llamo Dan, imparto Informática y Seguridad de la Información. Hola, me llamo Erin, imparto Informática y Programación de Gráficos 3D. Hola, me llamo Frankie, imparto Marketing Online, Administración de Empresas y Comercio Electrónico.

Implementaciones

La única implementación completa de PHP es la original, conocida simplemente como PHP. Es la más utilizada y funciona con el motor Zend . Para distinguirla de otras implementaciones, a veces se la denomina extraoficialmente "Zend PHP". El motor Zend compila el código fuente de PHP sobre la marcha a un formato interno que puede ejecutar, por lo que funciona como un intérprete . [ 231 ] [ 232 ] También es la "implementación de referencia" de PHP, ya que PHP no tiene una especificación formal, y por lo tanto, la semántica de Zend PHP define la semántica de PHP. Debido a la semántica compleja y matizada de PHP, definida por el funcionamiento de Zend, es difícil que las implementaciones competidoras ofrezcan compatibilidad total. [ 233 ]

El modelo de PHP de una sola solicitud por ejecución de script, y el hecho de que Zend Engine sea un intérprete, conduce a la ineficiencia; como resultado, se han desarrollado varios productos para ayudar a mejorar el rendimiento de PHP. Para acelerar el tiempo de ejecución y no tener que compilar el código fuente de PHP cada vez que se accede a la página web, los scripts de PHP también se pueden implementar en el formato interno del motor de PHP usando una caché de opcode , que funciona almacenando en caché la forma compilada de un script de PHP (opcodes) en memoria compartida para evitar la sobrecarga de analizar y compilar el código cada vez que se ejecuta el script. Una caché de opcode, Zend Opcache , está integrada en PHP desde la versión 5.5. [ 234 ] Otro ejemplo de una caché de opcode ampliamente utilizada es Alternative PHP Cache (APC), que está disponible como una extensión PECL . [ 235 ]

Aunque Zend PHP sigue siendo la implementación más popular, se han desarrollado otras. Algunas de ellas son compiladores o admiten la compilación JIT , por lo que ofrecen ventajas de rendimiento sobre Zend PHP a costa de no ser totalmente compatibles con PHP. Entre las implementaciones alternativas se incluyen las siguientes:

  • HHVM (HipHop Virtual Machine)  , desarrollado en Facebook y disponible como código abierto, convierte el código PHP en un bytecode de alto nivel (conocido comúnmente como lenguaje intermedio ), que luego es traducido dinámicamente a código máquina x86-64 en tiempo de ejecución por un compilador justo a tiempo (JIT), lo que resulta en mejoras de rendimiento de hasta 6 veces. [ 236 ] Sin embargo, desde la versión 7.2, Zend ha superado a HHVM, [ 237 ] y HHVM  3.24 es la última versión que admite oficialmente PHP. [ 238 ]
    • HipHop  , desarrollado en Facebook y disponible como código abierto, transforma los scripts PHP en código C++ y luego compila el código resultante, reduciendo la carga del servidor hasta en un 50 %. A principios de 2013, Facebook lo dejó de usar en favor de HHVM debido a múltiples razones, incluyendo dificultades de implementación y falta de soporte para todo el lenguaje PHP, incluyendo las construcciones `<script> create_function()` y ` eval()<script>`. [ 239 ]
  • Parrot  es una máquina virtual diseñada para ejecutar lenguajes dinámicos de manera eficiente; el traductor cruzado Pipp transforma el código fuente de PHP en la representación intermedia de Parrot , que luego se traduce al código de bytes de Parrot y es ejecutado por la máquina virtual.
  • PeachPie : un compilador de segunda generación para el código de bytes del Lenguaje Intermedio Común (CIL) de .NET , construido sobre la plataforma Roslyn ; sucesor de Phalanger, con el que comparte varios componentes arquitectónicos.
  • Phalanger  : compila PHP en código de bytes .Net Common Intermediate Language; predecesor de PeachPie.
  • Quercus  : compila PHP a código de bytes de Java.

Licencias

PHP es software libre publicado bajo la Licencia PHP , que es equivalente a la licencia BSD de 3 cláusulas . [ 240 ]

Las versiones anteriores a la 8.6 se publicaron bajo una licencia más restrictiva, que estipula que: [ 241 ]

Los productos derivados de este software no pueden denominarse "PHP" ni incluir "PHP" en su nombre sin la autorización previa por escrito de group@php.net. Para indicar que su software funciona con PHP, utilice " Foo for PHP" en lugar de "PHP Foo" o "phpfoo".

Esta restricción en el uso de "PHP" hizo que la Licencia PHP fuera incompatible con la Licencia Pública General de GNU (GPL), mientras que la Licencia Zend era incompatible debido a una cláusula publicitaria similar a la de la licencia BSD original . [ 242 ]

Desarrollo y comunidad

PHP incluye varias bibliotecas libres y de código abierto en su distribución de código fuente o las utiliza en las compilaciones binarias de PHP resultantes. PHP es fundamentalmente un sistema con acceso a Internet, con módulos integrados para acceder a servidores de Protocolo de Transferencia de Archivos (FTP) y a numerosos servidores de bases de datos, como PostgreSQL , MySQL , Microsoft SQL Server y SQLite (que es una base de datos integrada), servidores LDAP y otros. Numerosas funciones familiares para los programadores de C, como las de la familia stdio , están disponibles en las compilaciones estándar de PHP. [ 243 ]

PHP permite a los desarrolladores escribir extensiones en C para agregar funcionalidad al lenguaje PHP. Las extensiones de PHP se pueden compilar estáticamente en PHP o cargar dinámicamente en tiempo de ejecución. Se han escrito numerosas extensiones para agregar soporte para la API de Windows , administración de procesos en sistemas operativos tipo Unix , cadenas multibyte ( Unicode ), cURL y varios formatos de compresión populares . Otras características de PHP disponibles a través de extensiones incluyen la integración con Internet Relay Chat (IRC), la generación dinámica de imágenes y contenido de Adobe Flash , PHP Data Objects (PDO) como una capa de abstracción utilizada para acceder a bases de datos, [ 244 ] [ 245 ] [ 246 ] [ 247 ] [ 248 ] [ 249 ] [ 250 ] e incluso síntesis de voz . Algunas de las funciones principales del lenguaje, como las que manejan cadenas y matrices, también se implementan como extensiones. [ 251 ] El proyecto PHP Extension Community Library (PECL) es un repositorio para extensiones del lenguaje PHP. [ 252 ] La mayor parte de la comunidad se centra en el desarrollo web y en PHP ejecutándose en el lado del servidor (aunque también sirve JavaScript para el lado del cliente), y algunos usos excepcionales son, por ejemplo, aplicaciones gráficas independientes (con PHP-GTK sin mantenimiento desde hace más de una década), [ 253 ] e incluso el control de drones . [ 254 ]

Otros proyectos, como Zephir , permiten crear extensiones de PHP en un lenguaje de alto nivel y compilarlas en extensiones nativas de PHP. Este enfoque, en lugar de escribir las extensiones directamente en C, simplifica su desarrollo y reduce el tiempo necesario para programarlas y probarlas. [ 255 ]

En diciembre de 2018, el Grupo PHP estaba formado por diez personas: Thies C. Arntzen , Stig Bakken , Shane Caraveo , Andi Gutmans , Rasmus Lerdorf , Sam Ruby , Sascha Schumann , Zeev Suraski , Jim Winstead y Andrei Zmievski . [ 256 ]

Zend Technologies ofrece una certificación PHP basada en el examen PHP  8 [ 257 ] (y anteriormente basada en PHP 7 y 5.5) para que los programadores se conviertan en desarrolladores PHP certificados. 

La Fundación PHP

El 26 de noviembre de 2021, el blog de JetBrains anunció la creación de The PHP Foundation, que patrocinará el diseño y desarrollo de PHP. [ 259 ]

La fundación contrata a "desarrolladores principales" para trabajar en el repositorio principal del lenguaje PHP. Roman Pronskiy, miembro del consejo de administración de la fundación, afirmó que su objetivo es pagar "salarios de mercado" a los desarrolladores. [ 263 ]

La respuesta a la fundación ha sido mayoritariamente positiva. [ 264 ] [ 265 ]

El Fondo Soberano de Tecnología de Alemania proporcionó más de 200.000 euros para apoyar a la Fundación PHP. [ 266 ]

Instalación y configuración

Ejemplo de salida de la función phpinfo() en PHP  7.1

Existen dos formas principales de agregar soporte para PHP a un servidor web  : como módulo nativo del servidor web o como ejecutable CGI. PHP cuenta con una interfaz de módulo directa denominada Interfaz de Programación de Aplicaciones del Servidor (SAPI), compatible con numerosos servidores web, como Apache HTTP Server , Microsoft IIS , Caddy (a través de FrankenPHP) e iPlanet Web Server . Otros servidores web, como OmniHTTPd, son compatibles con la Interfaz de Programación de Aplicaciones del Servidor de Internet (ISAPI), la interfaz de módulo del servidor web de Microsoft . Si PHP no dispone de soporte de módulo para un servidor web, siempre puede utilizarse como procesador CGI ( Interfaz de Puerta de Enlace Común ) o FastCGI ; en ese caso, el servidor web se configura para usar el ejecutable CGI de PHP para procesar todas las solicitudes a archivos PHP. [ 267 ]

PHP-FPM (FastCGI Process Manager) es una implementación alternativa de FastCGI para PHP, incluida en la distribución oficial de PHP desde la versión 5.3.3. [ 268 ] En comparación con la implementación anterior de FastCGI, contiene algunas características adicionales, principalmente útiles para servidores web con mucha carga. [ 269 ]

Al usar PHP para la programación de scripts de línea de comandos, se necesita un ejecutable de interfaz de línea de comandos (CLI) de PHP. PHP admite una interfaz de programación de aplicaciones de servidor (SAPI) CLI desde PHP  4.3.0. [ 270 ] El objetivo principal de esta SAPI es desarrollar aplicaciones de shell usando PHP. Existen bastantes diferencias entre la SAPI CLI y otras SAPI, aunque comparten muchos comportamientos. [ 271 ]

PHP tiene una interfaz de módulo directa llamada SAPI para diferentes servidores web; [ 272 ] en el caso de PHP  5 y Apache  2.0 en Windows, se proporciona en forma de un archivo DLL llamado php5apache2.dll , [ 273 ] que es un módulo que, entre otras funciones, proporciona una interfaz entre PHP y el servidor web, implementada en un formato que el servidor entiende. Este formato es lo que se conoce como SAPI.

Existen diferentes tipos de SAPI para diversas extensiones de servidores web. Por ejemplo, además de las mencionadas anteriormente, otras SAPI para el lenguaje PHP incluyen la Interfaz de puerta de enlace común y la interfaz de línea de comandos. [ 272 ] [ 274 ]

PHP también se puede utilizar para escribir aplicaciones de interfaz gráfica de usuario (GUI) de escritorio, utilizando "PHP Desktop" . GitHub .o la extensión PHP-GTK descontinuada . PHP-GTK no está incluida en la distribución oficial de PHP, [ 267 ] y como extensión, solo se puede usar con versiones de PHP 5.1.0 y posteriores. La forma más común de instalar PHP-GTK es compilándola desde el código fuente. [ 275 ]

Cuando PHP se instala y utiliza en entornos de nube , se proporcionan kits de desarrollo de software (SDK) para utilizar funciones específicas de la nube. [ 276 ] Por ejemplo:

Se admiten numerosas opciones de configuración, que afectan tanto a las características principales de PHP como a las extensiones. [ 279 ] [ 280 ] El archivo de configuración php.inise busca en diferentes ubicaciones, dependiendo de cómo se utilice PHP. [ 281 ] El archivo de configuración se divide en varias secciones, [ 282 ] mientras que algunas de las opciones de configuración también se pueden establecer dentro de la configuración del servidor web. [ 283 ]

Usar

Una descripción general del paquete de software LAMP, que se muestra aquí junto con Squid.

PHP es un lenguaje de scripting de propósito general especialmente adecuado para el desarrollo web del lado del servidor , en cuyo caso generalmente se ejecuta en un servidor web . Cualquier código PHP en un archivo solicitado es ejecutado por el entorno de ejecución de PHP, normalmente para crear contenido dinámico para páginas web o imágenes dinámicas utilizadas en sitios web u otros entornos. [ 284 ] También se puede utilizar para scripting de línea de comandos y aplicaciones de interfaz gráfica de usuario (GUI) del lado del cliente . PHP se puede implementar en la mayoría de los servidores web, muchos sistemas operativos y plataformas , y se puede utilizar con muchos sistemas de gestión de bases de datos relacionales (RDBMS). La mayoría de los proveedores de alojamiento web admiten PHP para su uso por parte de sus clientes. Está disponible de forma gratuita, y el Grupo PHP proporciona el código fuente completo para que los usuarios lo compilen, personalicen y amplíen para su propio uso. [ 285 ]

Página web dinámica: ejemplo de programación del lado del servidor (PHP y MySQL)

Originalmente diseñado para crear páginas web dinámicas , PHP ahora se centra principalmente en el scripting del lado del servidor , [ 286 ] y es similar a otros lenguajes de scripting del lado del servidor que proporcionan contenido dinámico desde un servidor web a un cliente , como Python , ASP.NET de Microsoft , JavaServer Pages de Sun Microsystems , [ 287 ] y . PHP también ha atraído el desarrollo de muchos marcos de software que proporcionan bloques de construcción y una estructura de diseño para promover el desarrollo rápido de aplicaciones (RAD). Algunos de estos incluyen PRADO , CakePHP , Symfony , CodeIgniter , Laravel , Yii Framework , Phalcon y Laminas , que ofrecen características similares a otros marcos web .mod_perl

La arquitectura LAMP se ha popularizado en la industria web como método para implementar aplicaciones web. [ 288 ] PHP se usa comúnmente como la P en este paquete junto con Linux , Apache y MySQL , aunque la P también puede referirse a Python , Perl o alguna combinación de los tres. Paquetes similares, WAMP y MAMP , también están disponibles para Windows y macOS , donde la primera letra representa el sistema operativo correspondiente. Si bien tanto PHP como Apache se proporcionan como parte de la instalación base de macOS, los usuarios de estos paquetes buscan un mecanismo de instalación más simple que pueda mantenerse actualizado más fácilmente.

Para escenarios de uso específicos y más avanzados, PHP ofrece una forma bien definida y documentada de escribir extensiones personalizadas en C o C++ . [ 289 ] [ 290 ] [ 291 ] [ 292 ] [ 293 ] [ 294 ] [ 295 ] Además de extender el propio lenguaje en forma de bibliotecas adicionales , las extensiones proporcionan una forma de mejorar la velocidad de ejecución donde es crítica y hay margen de mejora mediante el uso de un verdadero lenguaje compilado . [ 296 ] [ 297 ] PHP también ofrece formas bien definidas de integrarse en otros proyectos de software. De esa forma, PHP puede usarse fácilmente como un lenguaje de scripting interno para otro proyecto, proporcionando también una interfaz estrecha con las estructuras de datos internas específicas del proyecto . [ 298 ]

PHP recibió críticas mixtas debido a la falta de soporte para multihilo a nivel del lenguaje principal, [ 299 ] aunque el uso de hilos es posible gracias a la extensión PECL "pthreads" . [ 300 ] [ 301 ]

Se han desarrollado una interfaz de línea de comandos, php-cli, y dos motores de scripting ActiveX Windows Script Host para PHP.

Estadísticas de popularidad y uso

PHP se utiliza para sistemas de gestión de contenido web , incluidos MediaWiki , [ 302 ] WordPress , [ 303 ] Joomla , [ 304 ] Drupal , [ 305 ] Moodle , [ 306 ] eZ Publish , eZ Platform y SilverStripe . [ 307 ]

A partir de enero de 2013 PHP se utilizó en más de 240  millones de sitios web (39% de los muestreados) y se instaló en 2,1  millones de servidores web . [ 308 ]

A fecha de 20 de febrero de 2026  (tres meses después  del lanzamiento de PHP 8.5), PHP se utiliza como lenguaje de programación del lado del servidor en el 72% de los sitios web donde se pudo determinar el lenguaje; PHP  8 es la versión más utilizada del lenguaje con el 56,6% de los sitios web que utilizan PHP en esa versión, mientras que el 34,3% utiliza PHP  7, el 9% utiliza PHP 5 y el 0,1% utiliza PHP 4. [ 195 ]

PHP  8 56,6%
PHP  7 34,3%
PHP  5 9%
PHP  4 0,1%
Cuota de uso de las versiones de PHP el 20 de febrero de 2026: tres meses después del lanzamiento de PHP 8.5 [ 195 ] [ 309 ] [ 310 ] [ 311 ] [ 312 ]
  1. PHP 8.5: 0.50% de PHP 8 (0.28%)
  2. PHP 8.4: 8,20% de PHP 8 (4,64%)
  3. PHP 8.3: 24.0% de PHP 8 (13.6%)
  4. PHP 8.2: 36,4% de PHP 8 (20,6%)
  5. PHP 8.1: 21,4% de PHP 8 (12,1%)
  6. PHP 8.0: 9,00% de PHP 8 (5,09%)
  7. PHP 7.4: 73,8% de PHP 7 (25,3%)
  8. PHP 7.3: 10,7% de PHP 7 (3,67%)
  9. PHP 7.2: 8,40% de PHP 7 (2,88%)
  10. PHP 7.1: 3,50% de PHP 7 (1,20%)
  11. PHP 7.0: 3,70% de PHP 7 (1,27%)
  12. PHP 5.6: 55.0% de PHP 5 (4.95%)
  13. PHP 5.5: 8.00% de PHP 5 (0.72%)
  14. PHP 5.4: 15.0% de PHP 5 (1.35%)
  15. PHP 5.3: 14,9% de PHP 5 (1,34%)
  16. PHP 5.2: 6,60% de PHP 5 (0,59%)
  17. PHP 5.1: 0,40% de PHP 5 (0,04%)
  18. PHP 5.0: <0,1% de PHP 5 (0,00%)
  19. PHP 4.4: 73,8% de PHP 4 (0,07%)
  20. PHP 4.3: 22,2% de PHP 4 (0,02%)
  21. PHP 4.2: 2,60% de PHP 4 (0,00%)
  22. PHP 4.1: 0,70% de PHP 4 (0,00%)
  23. PHP 4.0: 0,70% de PHP 4 (0,00%)

Seguridad

En 2019, el 11% de todas las vulnerabilidades listadas por la Base de Datos Nacional de Vulnerabilidades estaban vinculadas a PHP; [ 313 ] históricamente, alrededor del 30% de todas las vulnerabilidades listadas desde 1996 en esta base de datos están vinculadas a PHP. Las fallas de seguridad técnica del lenguaje en sí o de sus bibliotecas principales no son frecuentes (22 en 2009, alrededor del 1% del total aunque PHP se aplica a alrededor del 20% de los programas listados). [ 314 ] Reconociendo que los programadores cometen errores, algunos lenguajes incluyen verificación de contaminación para detectar automáticamente la falta de validación de entrada que induce muchos problemas. Dicha característica se ha propuesto para PHP en el pasado, pero fue rechazada o la propuesta abandonada. [ 315 ] [ 316 ] [ 317 ]

Los proyectos de terceros como Suhosin [ 318 ] y Snuffleupagus [ 319 ] tienen como objetivo eliminar o cambiar partes peligrosas del idioma.

Históricamente, las versiones antiguas de PHP tenían algunos parámetros de configuración y valores predeterminados para tales configuraciones de tiempo de ejecución que hacían que algunas aplicaciones PHP fueran propensas a problemas de seguridad. Entre estos, las directivas de configuración magic_quotes_gpcy register_globals[ 320 ] eran las más conocidas; esta última convertía cualquier parámetro de URL en variables PHP, abriendo una vía para graves vulnerabilidades de seguridad al permitir que un atacante estableciera el valor de cualquier variable global no inicializada e interfiriera con la ejecución de un script PHP. El soporte para las configuraciones de " comillas mágicas " y "registrar variables globales" se ha descontinuado desde PHP  5.3.0 y se eliminó de PHP  5.4.0. [ 321 ]

Otro ejemplo de la posible vulnerabilidad de configuración de tiempo de ejecución proviene de no deshabilitar la ejecución de PHP (por ejemplo, usando la enginedirectiva de configuración) [ 322 ] para el directorio donde se almacenan los archivos cargados; habilitarla puede resultar en la ejecución de código malicioso incrustado en los archivos cargados. [ 323 ] [ 324 ] [ 325 ] La mejor práctica es ubicar el directorio de imágenes fuera de la raíz del documento disponible para el servidor web y servirlo a través de un script intermedio o deshabilitar la ejecución de PHP para el directorio que almacena los archivos cargados.

Además, habilitar la carga dinámica de extensiones PHP (mediante enable_dldirectiva de configuración) [ 326 ] en un entorno de alojamiento web compartido puede generar problemas de seguridad. [ 327 ] [ 328 ]

Las conversiones de tipo implícitas que dan como resultado que diferentes valores se traten como iguales, a veces en contra de la intención del programador, pueden generar problemas de seguridad. Por ejemplo, el resultado de la comparación '0e1234' == '0'es true, porque las cadenas que se pueden analizar como números se convierten a números; en este caso, el primer valor comparado se trata como notación científica con el valor (0 × 10 1234 ), que es cero. Errores como este provocaron vulnerabilidades de autenticación en Simple Machines Forum , [ 329 ] Typo3 [ 330 ] y phpBB [ 331 ] cuando se compararon hashes de contraseñas MD5 . La forma recomendada es usar (para seguridad contra ataques de temporización ), o el operador de identidad ( ), ya que da como resultado .hash_equals()strcmp==='0e1234' === '0'false

En un análisis de 2013 de más de 170.000 desfiguraciones de sitios web , publicado por Zone-H , la técnica más utilizada (53%) fue la explotación de la vulnerabilidad de inclusión de archivos , relacionada principalmente con el uso inseguro de las construcciones del lenguaje PHP include, require, y allow_url_fopen. [ 332 ] [ 333 ]

Seguridad criptográfica

PHP incluye rand()[ 334 ] y mt_rand()[ 335 ] funciones que utilizan un generador de números pseudoaleatorios y no son criptográficamente seguras. A partir de la versión 8.1, random_int()se incluye la función que utiliza una fuente de aleatoriedad criptográficamente segura proporcionada por el sistema. [ 336 ]

Existen dos tipos de ataques que pueden realizarse sobre fuentes de entropía PHP: el "ataque de semilla" y el "ataque de recuperación de estado". En 2012, una GPU de 250 dólares podía realizar hasta 2³⁰ cálculos MD5 por segundo, mientras que una GPU de 750 dólares podía realizar cuatro veces más cálculos simultáneamente. [ 337 ] En combinación con un " ataque de cumpleaños ", esto puede generar graves vulnerabilidades de seguridad.

Apoyo a largo plazo

El equipo de desarrollo de PHP proporciona correcciones de errores oficiales durante dos años después del lanzamiento de cada versión menor, seguidos de otros dos años en los que solo se publican correcciones de seguridad. [ 193 ] Después de esto, la versión se considera que ha llegado al final de su ciclo de vida y ya no recibe soporte oficial.

Más allá de esto, se puede obtener soporte a largo plazo de proveedores comerciales, como Zend y otros [ 338 ] [ 339 ].

Véase también

Referencias

  1. 1 2 Lerdorf, Rasmus (8 de junio de 1995). "Anuncio: Herramientas para páginas de inicio personales (herramientas PHP)" . Recuperado el 7 de junio de 2011 .
  2. 1 2 Lerdorf, Rasmus (26 de abril de 2007). "PHP on Hormones – history of PHP presentation by Rasmus Lerdorf given at the MySQL Conference in Santa Clara, California" . The Conversations Network. Archivado del original el 29 de julio de 2013. 
  3. "Versión 8.5.8" . 3 de julio de 2026. Consultado el 4 de julio de 2026 .
  4. "PHP: Argumentos de función – Manual" .
  5. 1 2 3 Eberlei, Benjamin; Schröder, Martin (2020-03-09). "PHP RFC: Attributes v2" . wiki.php.net . Recuperado el 2026-05-11 .
  6. 1 2 3 Garfield, Larry; Tovilo, Ilija (2020-11-11). "PHP RFC: Pattern Matching" . wiki.php.net . Recuperado el 2026-05-11 .
  7. "PHP: Prefacio – Manual" .
  8. 1 2 3 Garfield, Larry; Tovilo, Ilija (2020-12-04). "PHP RFC: Enumeraciones" . wiki.php.net . Recuperado el 2026-05-11 .
  9. Stogov, Dmitry [@dstogov] (4 de diciembre de 2015). "No es un secreto que algunas ideas de optimización de #PHP7 vinieron de HHVM, LuaJIT y V8. Gracias @HipHopVM @SaraMG. #php7thankyou" ( Tweet ) vía Twitter .
  10. Tovilo, Ilija (22 de mayo de 2020). "PHP RFC: Match expression v2" . wiki.php.net . Consultado el 29 de noviembre de 2020 .
  11. "PHP: Preprocesador de hipertexto" . Consultado el 12 de febrero de 2020 .
  12. 1 2 Krill, Paul (18 de noviembre de 2013). "Cree en la exageración: el fundador de PHP respalda la tecnología HipHop de Facebook" . InfoWorld . Recuperado el 13 de octubre de 2022 .
  13. "Anuncio: Herramientas para páginas de inicio personales (herramientas PHP)" . Consultado el 3 de noviembre de 2022 .
  14. 1 2 3 4 5 6 7 8 9 "Historia de PHP y proyectos relacionados" . The PHP Group . Consultado el 25 de febrero de 2008 .
  15. 1 2 3 Jon Duckett; Emme Stone; Chris Ullman (2022). PHP y MySQL: desarrollo web del lado del servidor . Hoboken, Nueva Jersey : John Wiley & Sons, Inc. ISBN 978-1-119-14921-7LCCN 2021951353. Archivado del original el 30 de abril de 2025. Consultado el 28 de abril de 2026 . 
  16. Lerdorf, Rasmus (2012-07-20). "Me pregunto por qué la gente sigue escribiendo que PHP alguna vez fue escrito en Perl. Nunca lo fue. #php" . Twitter . Consultado el 4 de septiembre de 2014 .
  17. Lerdorf, Rasmus (26 de abril de 2007). "PHP y hormonas" . The Conversations Network. Archivado del original (mp3) el 6 de enero de 2019. Recuperado el 22 de junio de 2009 .
  18. Lerdorf, Rasmus (2007). "Diapositiva 3" . Diapositivas para la charla 'PHP sobre hormonas' . The PHP Group . Recuperado el 22 de junio de 2009 .
  19. Lerdorf, Rasmus (1995-06-08). "Anuncio: Herramientas para páginas de inicio personales (herramientas PHP)" . Grupo de noticias : comp.infosystems.www.authoring.cgi . Recuperado el 17 de septiembre de 2006 . 
  20. "Historia de PHP" . php.net .
  21. "Rasmus Lerdorf, Senior Technical Yahoo: PHP, Behind the Mic" . 19 de noviembre de 2003. Archivado del original el 28 de julio de 2013.
  22. Alshetwi, AB; Rahmat, RAAO; Borhan, MN; Ismael, S.; Ali, A.; Irtema, HIM; Alfakhria, AY (2018). "Sistema experto basado en la web para la optimización del tráfico vial en países en desarrollo" . Recuperado el 13 de febrero de 2024 .
  23. "Problemas con PHP" . Consultado el 20 de diciembre de 2010 .
  24. "php.internals: Re: Consistencia en los nombres de las funciones" . news.php.net . 2013-12-28 . Consultado el 2014-02-09 .
  25. Rasmus Lerdorf (16 de diciembre de 2013). "Re: Nomenclatura flexible de funciones" . Grupo de noticias : php.internals . Consultado el 26 de diciembre de 2013 . 
  26. "PHP Acrónimo que significa Voto" . PHP.net . Archivado del original el 15 de agosto de 2000. 
  27. "Zend Engine versión 2.0: Descripción general de las características y diseño" . Zend Technologies Ltd. Archivado del original el 19 de julio de 2006. Consultado el 17 de septiembre de 2006 .
  28. "archivo de noticias de php.net 2007" . The PHP Group. 13 de julio de 2007. Consultado el 22 de febrero de 2008 .
  29. Kerner, Sean Michael (1 de febrero de 2008). "PHP 4 ha muerto: ¡Viva PHP 5!" . InternetNews. Archivado del original el 6 de agosto de 2018. Consultado el 16 de diciembre de 2018 .  
  30. Trachtenberg, Adam (15 de julio de 2004). "¡Por qué PHP 5 es genial!" . O'Reilly. Archivado del original el 31 de marzo de 2016. Consultado el 22 de febrero de 2008 . 
  31. "GoPHP5" . Archivado del original el 17 de julio de 2011.
  32. "Los proyectos PHP unen fuerzas para adoptar PHP 5" (PDF) . Comunicado de prensa de GoPHP5 . Archivado del original (PDF) el 4 de agosto de 2019. Consultado el 23 de febrero de 2008 . 
  33. "GoPHP5" . GoPHP5. Archivado del original el 27 de abril de 2011. Consultado el 22 de febrero de 2008 .
  34. "Tipos: Cadenas (Manual de PHP)" . PHP.net . Consultado el 22 de septiembre de 2013 .
  35. "Detalles del tipo String (Manual de PHP)" . PHP.net . Consultado el 22 de septiembre de 2021 .
  36. Andrei Zmievski (10 de agosto de 2005). "Documento de diseño de soporte Unicode para PHP" (Lista de correo) . Recuperado el 9 de febrero de 2014 .
  37. "PHP 5.5 o 6.0" . Consultado el 9 de febrero de 2014 . 
  38. Andrei Zmievski (22 de abril de 2011). "Lo bueno, lo malo y lo feo: ¿Qué pasó con Unicode y PHP 6?" . Consultado el 9 de febrero de 2014 . 
  39. Rasmus Lerdorf (11 de marzo de 2010). "PHP 6" (Lista de correo) . Consultado el 7 de febrero de 2014 . 
  40. "Enlace estático tardío en PHP" . Digital Sandwich. 23 de febrero de 2006. Consultado el 25 de marzo de 2008 .
  41. "Palabra clave estática" . The PHP Group . Consultado el 25 de marzo de 2008 .
  42. 1 2 3 4 "PHP: Proceso de lanzamiento" . 2011-06-20 . Recuperado el 2013-10-06 .
  43. "PHP para Windows: versiones binarias y de código fuente (5.3)" . php.net . Consultado el 29 de octubre de 2013 .
  44. "PHP para Windows: versiones binarias y de código fuente (5.4)" . php.net . Consultado el 29 de octubre de 2013 .
  45. "PHP para Windows: versiones binarias y de código fuente (5.5)" . php.net . Consultado el 29 de octubre de 2013 .
  46. "PHP: Versiones compatibles" .
  47. "El interminable debate de los Muppets sobre PHP 6 vs PHP 7" . Archivado del original el 19/11/2015 . Consultado el 19/11/2015 .  
  48. "RFC: Nombre de la próxima versión de PHP" . php.net . 2014-07-07 . Consultado el 2014-07-15 .
  49. "Re: [ PHP-DEV ] [ VOTE ] [ RFC ] Nombre de la próxima versión de PHP (de nuevo)" . 30-07-2014 . Consultado el 30-07-2014 .
  50. "phpng: Motor PHP refactorizado con gran mejora de rendimiento" . news.php.net .
  51. "PHP: rfc:phpng" . php.net . Consultado el 16 de diciembre de 2014 .
  52. 1 2 "PHP: phpng" . php.net . Consultado el 15 de julio de 2014 .
  53. ^ "Fusionar rama 'ZendEngine3'" . github.com . 2014-12-05 . Consultado el 2014-12-05 .
  54. 1 2 "PHP RFC: Sintaxis uniforme de variables" . php.net . 31 de mayo de 2014. Consultado el 30 de julio de 2014 .
  55. "PHP RFC: Corregir el comportamiento de "foreach"" . php.net . Consultado el 21 de mayo de 2015 .
  56. 1 2 "PHP RFC: Semántica de enteros" . php.net . Consultado el 21/05/2015 . Hacer que NaN e Infinity siempre se conviertan en cero al convertirlos a enteros significa una mayor consistencia entre plataformas y también es menos sorprendente que lo que se produce actualmente.
  57. "PHP RFC: ZPP Failure on Overflow" . php.net . Consultado el 21 de mayo de 2015 .
  58. "PHP RFC: Eliminación de SAPIs y extensiones obsoletas o aún no portadas a PHP7" . php.net . Consultado el 21 de mayo de 2015 .
  59. "PHP RFC: Eliminar etiquetas PHP alternativas" . php.net . Consultado el 21 de mayo de 2015 .
  60. 1 2 3 "RFC: Tipos de retorno" . php.net . 2015-01-27 . Consultado el 2015-01-28 .
  61. 1 2 "PHP: rfc:typed_properties_v2" . wiki.php.net . Consultado el 04-04-2019 .
  62. 1 2 3 4 5 6 "RFC: Declaraciones de tipos escalares" . php.net . 2015-03-16 . Consultado el 2015-03-17 .
  63. 1 2 "PHP: rfc:iterable" . php.net . 10-06-2016 . Consultado el 30-06-2023 .
  64. 1 2 "PHP: rfc:nullable_types" . php.net . 10-04-2014 . Consultado el 30-06-2023 .
  65. 1 2 "PHP: rfc:void_return_type" . php.net . 2015-11-09 . Consultado el 2015-11-14 .
  66. 1 2 "PHP: rfc:object-typehint" . wiki.php.net .
  67. 1 2 "PHP: rfc:isset_ternary" . php.net . Consultado el 16 de diciembre de 2014 .
  68. 1 2 "Combined Comparison (Spaceship) Operator" . php.net . Consultado el 21/05/2015 .
  69. 1 2 "PHP: rfc:short_list_syntax" . php.net . 2016-04-07 . Consultado el 2023-06-30 .
  70. 1 2 "PHP: rfc:multiple-catch" . php.net . 2016-03-06 . Recuperado el 2023-06-30 .
  71. 1 2 "PHP: rfc:flexible_heredoc_nowdoc_syntaxes" . wiki.php.net .
  72. 1 2 "PHP: rfc:null_coalesce_equal_operator" . wiki.php.net . Consultado el 04-04-2019 .
  73. 1 2 3 Brent. "Novedades de PHP 8" . Stitcher . Consultado el 22 de septiembre de 2020 .
  74. "PHP 8 lanzado" . PHP . Consultado el 27 de noviembre de 2020 .
  75. Brent. "PHP 8: Rendimiento JIT en aplicaciones web reales" . Stitcher.io . Consultado el 4 de octubre de 2020 .
  76. Rethams, Derick. "PHP 8: Un vistazo rápido a JIT" .
  77. ^ Popov, Nikita (13 de julio de 2020). ""¿Qué hay de nuevo en PHP 8.0?" Nikita Popov" . PHP fwdays. Archivado del original el 11 de diciembre de 2021. Consultado el 4 de octubre de 2020 .
  78. Daniele, Carlo (25 de mayo de 2020). "Novedades de PHP 8 (características, mejoras y el compilador JIT)" . Kinsta . Consultado el 24 de diciembre de 2020 .
  79. Karunaratne, Ayesh. "PHP 8.2: Soporte para la redacción de valores de parámetros sensibles" . PHP.Watch . Consultado el 12 de octubre de 2025 .
  80. 1 2 "PHP: rfc:marking_overriden_methods" . wiki.php.net . Consultado el 17 de diciembre de 2023 .
  81. "PHP: rfc:deprecated_attribute" . wiki.php.net . Consultado el 12-10-2025 .
  82. "PHP: rfc:marking_return_value_as_important" . wiki.php.net . Consultado el 12-10-2025 .
  83. "PHP: rfc:delayedtargetvalidation_attribute" . wiki.php.net . Consultado el 14-11-2025 .
  84. Scherzer, Daniel (2025-08-20). "Blog: # [ \DelayedTargetValidation ] Atributo explicado" . scherzer.dev . Recuperado el 2025-11-14 .
  85. 1 2 "PHP RFC: Union Types 2.0" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  86. 1 2 "PHP: rfc:pure-intersection-types" . wiki.php.net . Consultado el 26 de noviembre de 2021 .
  87. 1 2 "PHP: rfc:dnf_types" . wiki.php.net . Consultado el 7 de febrero de 2023 .
  88. 1 2 "PHP: rfc:noreturn_type" . wiki.php.net . Consultado el 26-11-2021 .
  89. 1 2 "PHP: rfc:null-false-standalone-types" . wiki.php.net . Consultado el 16 de junio de 2022 .
  90. 1 2 "PHP: rfc:true-type" . wiki.php.net . Consultado el 16 de junio de 2022 .
  91. 1 2 "PHP RFC: Comparaciones de cadena a número más sensatas" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  92. 1 2 "PHP RFC: Cadenas numéricas más sensatas" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  93. 1 2 "PHP: rfc:lsp_errors" . wiki.php.net . Consultado el 26 de mayo de 2019 .
  94. Karunaratne, Ayesh. "PHP 8.1: Pasar 'null' a parámetros de funciones internas que no admiten valores nulos está obsoleto" . PHP.Watch . Consultado el 12 de octubre de 2025 .
  95. Karunaratne, Ayesh. "PHP 8.2: Las propiedades dinámicas están obsoletas" . PHP.Watch . Consultado el 12 de octubre de 2025 .
  96. 1 2 3 4 5 6 7 8 9 10 11 12 "Ramas no compatibles" . php.net . Consultado el 31 de julio de 2019 .
  97. "PHP 4.0.0 lanzado" . Consultado el 25 de octubre de 2020 .
  98. 1 2 3 4 "PHP: Registro de cambios de PHP 4" . El Grupo PHP. 3 de enero de 2008. Consultado el 22 de febrero de 2008 . 
  99. "Anuncio de lanzamiento de PHP 4.1.0" . Consultado el 25 de octubre de 2020 .
  100. "Anuncio de lanzamiento de PHP 4.2.0" . Consultado el 25 de octubre de 2020 .
  101. "Anuncio de lanzamiento de PHP 4.3.0" . Consultado el 25 de octubre de 2020 .
  102. "Uso de PHP desde la línea de comandos" . Manual de PHP . The PHP Group . Consultado el 11 de septiembre de 2009 .
  103. "Anuncio de lanzamiento de PHP 4.4.0" . Consultado el 25 de octubre de 2020 .
  104. " Anuncio de lanzamiento de PHP 4.4.0" . Manual de PHP . The PHP Group . Consultado el 24 de noviembre de 2013 . 
  105. "¡PHP 5.0.0 lanzado!" . Consultado el 25 de octubre de 2020 .
  106. 1 2 3 "PHP: Registro de cambios de PHP 5" . El Grupo PHP. 08/11/2007 . Consultado el 22/02/2008 . 
  107. "Anuncio de lanzamiento de PHP 5.1.0" . Consultado el 25 de octubre de 2020 .
  108. "Manual de PHP: PDO" . The PHP Group. 15 de noviembre de 2011. Consultado el 15 de noviembre de 2011 .
  109. "Anuncio de lanzamiento de PHP 5.2.0" . Consultado el 25 de octubre de 2020 .
  110. "Anuncio de lanzamiento de PHP 5.3.0" . Consultado el 25 de octubre de 2020 .
  111. "Anuncio de lanzamiento de PHP 5.4.0" . Consultado el 25 de octubre de 2020 .
  112. "Servidor web integrado" . Consultado el 26 de marzo de 2012 .
  113. "Anuncio de lanzamiento de PHP 5.5.0" . Consultado el 25 de octubre de 2020 .
  114. 1 2 3 4 "Versiones compatibles" . php.net . Consultado el 13 de diciembre de 2017 .
  115. " Cambios en PHP 5.5.0" . php.net . Archivado del original el 1 de marzo de 2015. Consultado el 3 de marzo de 2015 . 
  116. "Anuncio de lanzamiento de PHP 5.6.0" . Consultado el 25 de octubre de 2020 .
  117. "Migración de PHP 5.5.x a PHP 5.6.x" . php.net . Consultado el 24 de marzo de 2014 .  
  118. Corbet, Jonathan (24 de marzo de 2010). "Reiniciando PHP 6" . Existen libros en las librerías que pretenden cubrir PHP 6 desde al menos 2008. Sin embargo, en marzo de 2010, PHP 6 aún no se ha lanzado ; de hecho, ni siquiera está cerca de hacerlo. Los acontecimientos recientes sugieren que PHP 6 no se lanzará antes de 2011 , si es que llega a lanzarse.      
  119. Krill, Paul (31/10/2014). "PHP 7 avanza a toda velocidad" . InfoWorld . Las versiones recientes de PHP han formado parte de la serie de lanzamientos 5.x, pero no habrá PHP 6. "Vamos a saltarnos la versión 6, porque hace años teníamos planes para una versión 6, pero esos planes eran muy diferentes de lo que estamos haciendo ahora", dijo Gutmans. Ir directamente a la versión 7 evita confusiones.     
  120. "Archivo de noticias – 2018: Lanzamiento de PHP 7.2.9" . php.net . 16 de agosto de 2018. Consultado el 16 de agosto de 2018 .  
  121. "PHP: rfc:size_t_and_int64_next" . php.net . Consultado el 16 de diciembre de 2014 .
  122. "PHP: rfc:abstract_syntax_tree" . php.net . Consultado el 16 de diciembre de 2014 .
  123. "PHP: rfc:closure_apply" . php.net . Consultado el 16 de diciembre de 2014 .
  124. "PHP: rfc:integer_semantics" . php.net . Consultado el 16 de diciembre de 2014 .
  125. "RFC: Sintaxis de escape de punto de código Unicode" . 24/11/2014 . Consultado el 19/12/2014 .
  126. "PHP RFC: Delegación de generador" . php.net . Consultado el 21 de mayo de 2015 .
  127. "PHP RFC: Clases anónimas" . php.net . Consultado el 21 de mayo de 2015 .
  128. "PHP RFC: Generador de números pseudoaleatorios criptográficamente seguro en el espacio del usuario" . php.net . Consultado el 21 de mayo de 2015 .
  129. "PHP RFC: Excepciones en el motor (para PHP 7)" . php.net . Consultado el 21 de mayo de 2015 . 
  130. "PHP RFC: Declaraciones de uso de grupos" . php.net . Consultado el 21 de mayo de 2015 .
  131. "PHP: rfc:class_constant_visibility" . php.net . 2015-10-27 . Consultado el 2015-12-08 .
  132. "PHP: rfc:libsodium" . wiki.php.net .
  133. "PHP: rfc:allow-abstract-function-override" . wiki.php.net .
  134. "PHP: rfc:parameter-no-type-variance" . wiki.php.net .
  135. «PHP:todo:php73» . wiki.php.net .
  136. "PHP: rfc:list_reference_assignment" . wiki.php.net .
  137. "PHP: rfc:pcre2-migration" . wiki.php.net .
  138. "PHP: hrtime Manual" . php.net . 
  139. "¡PHP 7.4.0 lanzado!" . php.net . Consultado el 28-11-2019 .
  140. "PHP: rfc:preload" . wiki.php.net . Consultado el 4 de abril de 2019 .
  141. "PHP: rfc:improve-openssl-random-pseudo-bytes" . wiki.php.net . Consultado el 4 de abril de 2019 .
  142. "PHP: rfc:weakrefs" . wiki.php.net . Consultado el 5 de abril de 2019 .
  143. "PHP: rfc:ffi" . wiki.php.net . Consultado el 5 de abril de 2019 .
  144. "PHP: rfc:permanent_hash_ext" . wiki.php.net . Consultado el 5 de abril de 2019 .
  145. "PHP: rfc:password_registry" . wiki.php.net . Consultado el 5 de abril de 2019 .
  146. "PHP: rfc:mb_str_split" . wiki.php.net . Consultado el 5 de abril de 2019 .
  147. "PHP: rfc:reference_reflection" . wiki.php.net . Consultado el 5 de abril de 2019 .
  148. "PHP: rfc:deprecate-and-remove-ext-wddx" . wiki.php.net . Consultado el 5 de abril de 2019 .
  149. "PHP: rfc:custom_object_serialization" . wiki.php.net . Consultado el 5 de abril de 2019 .
  150. "PHP: Versiones compatibles" . php.net . Consultado el 26 de noviembre de 2023 .
  151. "PHP: rfc:jit" . wiki.php.net . Consultado el 5 de abril de 2019 .
  152. "PHP: rfc:negative_array_index" . wiki.php.net . Consultado el 5 de abril de 2019 .
  153. "PHP RFC: Validación para métodos de rasgos abstractos" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  154. "RFC de PHP: Comprobaciones de tipo más estrictas para operadores aritméticos/bit-wise" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  155. "PHP RFC: Reclasificación de las advertencias del motor" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  156. "PHP: rfc:consistent_type_errors" . wiki.php.net . Consultado el 5 de abril de 2019 .
  157. "PHP RFC: Conversión de float a string independiente de la configuración regional" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  158. "PHP RFC: Ajustes de sintaxis de variables" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  159. "PHP RFC: Atributos V2" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  160. "PHP RFC: Enmiendas a los atributos" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  161. "PHP RFC: Sintaxis de atributos más corta" . wiki.php.net . Consultado el 20 de junio de 2020 .
  162. "PHP RFC: Cambio de sintaxis de atributos más cortos" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  163. "PHP RFC: Argumentos con nombre" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  164. "PHP RFC: Expresión de coincidencia v2" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  165. "PHP RFC: Promoción de propiedades del constructor" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  166. "PHP RFC: Mixed Type v2" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  167. "PHP RFC: Tipo de retorno estático" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  168. "PHP RFC: Operador Nullsafe" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  169. "PHP RFC: capturas sin captura" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  170. "PHP RFC: throw expression" . wiki.php.net . Consultado el 14 de agosto de 2020 .
  171. Andre, Tyson. "PHP RFC: Extensión JSON siempre disponible" . PHP . Consultado el 25 de octubre de 2020 .
  172. «PHP:todo:php81» . wiki.php.net . Consultado el 16 de junio de 2022 .
  173. "PHP RFC: Notación literal explícita de enteros octales" . wiki.php.net . Consultado el 25/11/2020 .
  174. "PHP RFC: Enumeraciones" . wiki.php.net . Consultado el 25 de marzo de 2021 .
  175. "PHP: rfc:readonly_properties_v2" . wiki.php.net . Consultado el 26-11-2021 .
  176. "PHP: rfc:first_class_callable_syntax" . wiki.php.net . Consultado el 26-11-2021 .
  177. "PHP: rfc:new_in_initializers" . wiki.php.net . Consultado el 26 de noviembre de 2021 .
  178. "PHP: rfc:final_class_const" . wiki.php.net . Consultado el 26 de noviembre de 2021 .
  179. "PHP: rfc:fibers" . wiki.php.net . Consultado el 26 de noviembre de 2021 .
  180. "PHP: todo:php82" . wiki.php.net . Consultado el 16-06-2022 .
  181. "PHP: rfc:readonly_classes" . wiki.php.net . Consultado el 16 de junio de 2022 .
  182. "PHP: rfc:strtolower-ascii" . wiki.php.net . Consultado el 16 de junio de 2022 .
  183. "PHP: rfc:constants_in_traits" . wiki.php.net . Consultado el 07-02-2023 .
  184. "¡PHP 8.3.0 lanzado!" . php.net . 23 de noviembre de 2023 . Consultado el 24 de noviembre de 2023 .
  185. "PHP: rfc:typed_class_constants" . wiki.php.net . Consultado el 17 de diciembre de 2023 .
  186. "PHP: rfc:dynamic_class_constant_fetch" . wiki.php.net . Consultado el 17-12-2023 .
  187. "PHP: rfc:readonly_amendments" . wiki.php.net . Consultado el 17 de diciembre de 2023 .
  188. "PHP: rfc:json_validate" . wiki.php.net . Consultado el 17-12-2023 .
  189. "PHP: rfc:randomizer_additions" . wiki.php.net . Consultado el 17 de diciembre de 2023 .
  190. "PHP: todo: php84" . php.net . 26 de marzo de 2024 . Consultado el 26 de marzo de 2024 .
  191. "PHP: todo: php85" . php.net . 16 de abril de 2024 . Consultado el 16 de abril de 2025 .
  192. "PHP: rfc:pipe-operator-v3" . wiki.php.net . Consultado el 06-08-2025 .
  193. 1 2 "PHP: RFC:release_cycle_update" .
  194. "PHP: Ramas no compatibles" .
  195. 1 2 3 "Estadísticas de uso de PHP para sitios web" . W3Techs – Encuestas de tecnología de la World Wide Web . W3Techs . Consultado el 20 de febrero de 2026 .
  196. "PHP: ElePHPant" . 4 de octubre de 2014. Consultado el 4 de octubre de 2014 .
  197. "Redireccionando…" . wwphp-fb.github.io .
  198. "El nacimiento de la mascota de PHP: ¡el creador de elePHPant, Vincent Pontier, revela la verdadera historia!" . 7php.com . 6 de enero de 2014.
  199. "ElePHPant" . PHP.earth . Consultado el 13 de febrero de 2024 .
  200. "PHP: ElePHPant" . www.php.net .
  201. "Guía de campo para elefantes" . afieldguidetoelephpants.net .
  202. 1 2 "PHP: rfc:shortags" . php.net . 2008-04-03 . Consultado el 2014-05-08 .
  203. "PHP: Sintaxis básica" . The PHP Group . Consultado el 22 de febrero de 2008 .
  204. "Estándar básico de codificación" . Grupo de interoperabilidad de marcos PHP . Consultado el 3 de enero de 2016 .
  205. "echo Manual" . php.net . Consultado el 17 de febrero de 2014 . 
  206. "Descripción de las directivas principales de php.ini Manual" . php.net . 17 de marzo de 2002. Consultado el 17 de febrero de 2014 . 
  207. "Tu primera página habilitada para PHP" . The PHP Group . Consultado el 25 de febrero de 2008 .
  208. Bray, Tim; et al. (26 de noviembre de 2008). "Instrucciones de procesamiento" . Lenguaje de marcado extensible (XML) 1.0 (quinta edición) . W3C . Recuperado el 18 de junio de 2009 . 
  209. "Variables" . The PHP Group . Consultado el 16 de marzo de 2008 .
  210. "Separación de instrucciones" . The PHP Group . Consultado el 16 de marzo de 2008 .
  211. "PHP: if – Manual" . www.php.net . Consultado el 8 de marzo de 2026 .
  212. "PHP: para – Manual" . www.php.net . Consultado el 8 de marzo de 2026 .
  213. "PHP: while – Manual" . www.php.net . Consultado el 8 de marzo de 2026 .
  214. "Enteros en PHP, ejecución con tijeras y portabilidad" . Blog de rendimiento de MySQL. 27 de marzo de 2007. Consultado el 28 de marzo de 2007 .
  215. "Enteros" . Manual de PHP . The PHP Group . Consultado el 26 de mayo de 2025 .
  216. 1 2 3 4 5 "Tipos" . The PHP Group . Consultado el 16 de marzo de 2008 .
  217. "Cadenas" . The PHP Group . Consultado el 21 de marzo de 2008 .
  218. "SPL – StandardPHPLibrary" . PHP.net . 16 de marzo de 2009. Consultado el 16 de marzo de 2009 . 
  219. 1 2 "Funciones definidas por el usuario (manual de PHP)" . php.net . 2014-07-04 . Consultado el 2014-07-07 .
  220. 1 2 "Funciones variables (manual de PHP)" . php.net . 2014-07-04 . Consultado el 2014-07-07 .
  221. "create_function() (manual de PHP)" . php.net . 6 de abril de 2022. Consultado el 4 de mayo de 2022 .
  222. "Funciones anónimas (manual de PHP)" . php.net . 4 de julio de 2014. Consultado el 7 de julio de 2014 .
  223. "Funciones flecha (manual de PHP)" . php.net . Consultado el 25 de enero de 2021 .
  224. Christian Seiler; Dmitry Stogov (1 de julio de 2008). "Solicitud de comentarios: funciones Lambda y cierres" . php.net . Consultado el 7 de julio de 2014 .
  225. 1 2 "Referencias de objetos PHP 5" . mjtsai.com . Consultado el 16 de marzo de 2008 . 
  226. "Cambios incompatibles con versiones anteriores" . php-legacy-docs.zend.com . Consultado el 20 de junio de 2025 .
  227. "Clases y objetos (PHP 5)" . The PHP Group . Consultado el 16 de marzo de 2008 . 
  228. "Clonación de objetos" . The PHP Group . Consultado el 16 de marzo de 2008 .
  229. "Visibilidad (Manual PHP)" . theserverpages.com . 19 de mayo de 2005. Archivado del original el 24 de septiembre de 2010. Consultado el 26 de agosto de 2010 .
  230. "PHP: Visibilidad – Manual" . www.php.net . Consultado el 19 de noviembre de 2025 .
  231. "¿Cómo funcionan los lenguajes de programación?" . Archivado del original el 16-07-2011 . Consultado el 04-11-2009 .
  232. Gilmore, W. Jason (23 de enero de 2006). Introducción a PHP y MySQL 5: De principiante a profesional . Apress. pág . 43. ISBN  1-59059-552-1.
  233. Julien Pauli; Nikita Popov; Anthony Ferrara. "Libro de aspectos internos de PHP" . Libro de aspectos internos de PHP . Archivado del original el 21/01/2025 . Consultado el 21/01/2025 .
  234. " [ VOTAR ] Integración de Zend Optimizer+ en la distribución de PHP" . news.php.net . Consultado el 8 de marzo de 2013 .
  235. "Alternative PHP Cache" . PHP.net . Archivado del original el 15/11/2013 . Consultado el 21/09/2013 .
  236. "Somos el 98,5% (y el 16%) « HipHop Virtual Machine" . hhvm.com . Diciembre de 2013. Consultado el 23 de febrero de 2014 . 
  237. "Los benchmarks definitivos de PHP 5.6, 7.0, 7.1, 7.2 y 7.3 (2019)" . 14 de enero de 2019. Consultado el 19 de abril de 2019 .
  238. Krill, Paul (2017-09-20). "¡Olvídate de PHP! El motor HHVM de Facebook cambia a Hack en su lugar" . InfoWorld . Recuperado el 2019-02-06 .
  239. "Anuncio en GitHub eliminando el soporte para HPHPc" . GitHub . Consultado el 24 de mayo de 2013 .
  240. "PHP: Información de licencia" . www.php.net . Consultado el 28 de abril de 2026 .
  241. "La licencia PHP, versión 3.01" . Consultado el 20 de mayo de 2010 .
  242. "Licencias de software libre incompatibles con la GPL" . Varias licencias y comentarios sobre ellas . Free Software Foundation . Consultado el 3 de enero de 2011 .
  243. "PHP: Listado de funciones y métodos Manual" . The PHP Group . Consultado el 14 de enero de 2015 . 
  244. "Introducción Manual" . php.net . 2013-06-07 . Consultado el 2013-06-13 . 
  245. Darryl Patterson (5 de agosto de 2004). "Simplifique la lógica empresarial con PHP DataObjects — O'Reilly Media" . ibm.com . Archivado del original el 16 de diciembre de 2014. Consultado el 16 de diciembre de 2014 . 
  246. "IBM — Estados Unidos" . Consultado el 16 de diciembre de 2014 . 
  247. "Cinco problemas comunes de bases de datos PHP" . ibm.com . 1 de agosto de 2006. Consultado el 13 de junio de 2013 .
  248. "IBM Redbooks — Desarrollo de aplicaciones PHP para servidores de datos IBM" . redbooks.ibm.com . Consultado el 16 de diciembre de 2014 . 
  249. "php [ architect ] Magazine – La revista para programadores PHP" . www.phparch.com .
  250. Krill, Paul (19 de octubre de 2005). "PHP se está popularizando en las empresas y compite con Java" . InfoWorld . Archivado del original el 13 de julio de 2014.
  251. "Referencia cruzada: /PHP_5_4/ext/standard/" . php.net . Archivado del original el 16 de marzo de 2012 . Consultado el 16 de diciembre de 2014 .
  252. "Desarrollo de extensiones PHP personalizadas" . devnewz.com . 9 de septiembre de 2002. Archivado del original el 18 de febrero de 2008. Consultado el 25 de febrero de 2008 .
  253. "Introducción: ¿Qué puede hacer PHP?" . Manual de PHP . Archivado del original el 16 de febrero de 2009 . Consultado el 5 de marzo de 2009 .
  254. "Helicóptero: Puerto de node-ar-drone que permite al usuario controlar un dron Parrot AR a través de PHP" . JoliCode. 11 de enero de 2019. Consultado el 23 de febrero de 2019 .
  255. "¿Por qué Zephir?" . zephir-lang.com . 2015-10-20 . Consultado el 2015-12-14 .
  256. "Créditos PHP" . Consultado el 16 de diciembre de 2018 .
  257. "Aprende PHP mediante formación y certificación PHP" . www.zend.com . Consultado el 16 de noviembre de 2020 .
  258. Walker, James (13 de diciembre de 2021). "Lo que significa la nueva Fundación PHP para el futuro de PHP" . How-To Geek . Recuperado el 26 de noviembre de 2023 .
  259. "La nueva vida de PHP – La Fundación PHP | El blog de PhpStorm" . El blog de JetBrains . 22 de noviembre de 2021. Consultado el 16 de junio de 2022 .
  260. "The PHP Foundation: Informe de Impacto y Transparencia 2022" . thephp.foundation . Consultado el 27 de noviembre de 2023 .
  261. Pronskiy, Roman (26 de febrero de 2024). "The PHP Foundation: Informe de impacto y transparencia 2023" . The PHP Foundation . Consultado el 1 de abril de 2024 .
  262. Pronskiy, Roman (31 de marzo de 2025). "The PHP Foundation: Informe de impacto y transparencia 2023" . The PHP Foundation . Consultado el 19 de agosto de 2025 .
  263. Anderson, Tim. "Se forma la Fundación PHP para financiar a los desarrolladores principales" . www.theregister.com . Consultado el 5 de diciembre de 2023 .
  264. "The PHP Foundation: A New Era for PHP" . Blog de JetBrains . JetBrains. 26 de noviembre de 2021. Consultado el 6 de octubre de 2025 .
  265. Claburn, Thomas (26 de noviembre de 2021). "Se forma la Fundación PHP para apoyar el lenguaje de código abierto" . The Register . Consultado el 6 de octubre de 2025 .
  266. "PHP" . Sovereign Tech Fund . Consultado el 26 de mayo de 2024 .
  267. 1 2 "Consideraciones generales de instalación" . php.net . Consultado el 22 de septiembre de 2013 .
  268. "Archivo de noticias: ¡PHP 5.3.3 lanzado!" . php.net . 22-07-2010. 
  269. "FastCGI Process Manager (FPM)" . php.net . Consultado el 22 de septiembre de 2013 .
  270. "Uso de la línea de comandos: Introducción" . php.net . Archivado del original el 21 de marzo de 2021. Consultado el 22 de septiembre de 2013 .
  271. "Uso de la línea de comandos: diferencias con otras SAPI" . php.net . Consultado el 22 de septiembre de 2013 .
  272. 1 2 "Consideraciones generales de instalación" . php.net . Consultado el 22 de septiembre de 2013 .
  273. "PHP: Apache 2.x en Microsoft Windows" . php.net . Archivado del original el 26 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  274. "Uso de la línea de comandos: Introducción" . php.net . Archivado del original el 21 de marzo de 2021. Consultado el 22 de septiembre de 2013 .
  275. "Instalando PHP-GTK 2" . php.net . Archivado del original el 12/12/2013 . Consultado el 22/09/2013 .
  276. Vinit Sharma. "¿Qué es la computación en la nube? | Cómo integrar PHP con AWS" . Clarion Technologies . Consultado el 6 de diciembre de 2025 .{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace )
  277. "AWS SDK para PHP" . aws.amazon.com . Consultado el 6 de marzo de 2014 .
  278. "Windows Azure SDK para PHP — Centro de Interoperabilidad, Puentes y Laboratorios" . interoperabilitybridges.com . Archivado del original el 20 de marzo de 2014. Consultado el 6 de marzo de 2014 . 
  279. "Configuración en tiempo de ejecución: Tabla de contenido" . php.net . Consultado el 22 de septiembre de 2013 .
  280. "Directivas php.ini: Lista de directivas php.ini" . php.net . Consultado el 22 de septiembre de 2013 .
  281. "Configuración en tiempo de ejecución: El archivo de configuración" . PHP.net . Consultado el 22 de septiembre de 2013 .
  282. «Directivas php.ini: Lista de secciones php.ini» . PHP.net . Consultado el 22 de septiembre de 2013 .
  283. "Configuración en tiempo de ejecución: dónde se puede establecer una configuración" . PHP.net . Consultado el 22 de septiembre de 2013 .
  284. "Procesamiento manual de imágenes y GD con PHP"; . php.net . Consultado el 09-04-2011 .
  285. "Integración de PHP en HTML" . O'Reilly. 3 de mayo de 2001. Archivado del original el 19 de febrero de 2008. Consultado el 25 de febrero de 2008 .
  286. "PHP Server-Side Scripting Language" . Universidad de Indiana . 4 de abril de 2007. Archivado del original el 21 de enero de 2016. Consultado el 25 de febrero de 2008 .
  287. "Tecnología JavaServer Pages : Comparación de métodos para contenido dinámico del lado del servidor en JavaServer Pages" (Documento técnico) . Sun Microsystems . Consultado el 25 de febrero de 2008 . 
  288. "Cinco maneras sencillas de optimizar su aplicación LAMP" . IBM . 25 de enero de 2011.
  289. "PHP en su esencia: Estructura de extensiones" . PHP.net . Archivado del original el 26 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  290. "PHP en esencia: La extensión "counter" – Un ejemplo continuo" . PHP.net . Archivado del original el 26 de septiembre de 2013. Consultado el 22 de septiembre de 2013 . 
  291. "Escritura de extensiones Parte I: Introducción a PHP y Zend" . Zend Technologies . 1 de marzo de 2005. Archivado del original el 24 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  292. "Escritura de extensiones, parte II: parámetros, matrices y ZVAL" . Zend Technologies . 6 de junio de 2005. Archivado del original el 26 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  293. "Escritura de extensiones Parte II: Parámetros, matrices y ZVALs (continuación)" . Zend Technologies . 6 de junio de 2005. Archivado del original el 26 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  294. "Escritura de extensiones Parte III: Recursos" . Zend Technologies . 12 de mayo de 2006. Archivado del original el 26 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  295. "Envolviendo clases de C++ en una extensión de PHP" . Zend Technologies . 22 de abril de 2009. Archivado del original el 20 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  296. "¿Extender PHP con C++?" . Stack Overflow . Consultado el 22/09/2013 .
  297. "¿Cómo puedo usar código C++ para interactuar con PHP?" . Stack Overflow . Consultado el 22/09/2013 .
  298. Golemon, Sara (2006). Extending and Embedding PHP . Sams. ISBN 978-0-672-32704-9.
  299. "Solicitud n.º 46919: Multihilo" . PHP.net . Consultado el 22 de septiembre de 2013 .
  300. "pthreads: Introducción (Manual de PHP)" . PHP.net . Consultado el 22 de septiembre de 2013 .
  301. "PECL :: Paquete :: pthreads" . pecl.php.net . Consultado el 09-02-2014 .  
  302. «Manual:Requisitos de instalación#PHP» . MediosWiki. 25 de enero de 2010 . Consultado el 26 de febrero de 2010 . PHP es el lenguaje de programación en el que está escrito MediaWiki [...]
  303. "Acerca de WordPress" . Consultado el 26 de febrero de 2010. WordPress fue [...] construido sobre PHP.
  304. Kempkens, Alex. "Joomla! — Sistema de gestión de contenido para crear sitios web y aplicaciones" . 
  305. "PHP y Drupal" . Drupal.org. 16 de septiembre de 2007. Archivado del original el 8 de febrero de 2010. Consultado el 13 de junio de 2010 .
  306. "Acerca de" . Moodle.org. Archivado del original el 11 de enero de 2010. Consultado el 20 de diciembre de 2009 .
  307. "Requisitos del servidor de SilverStripe" . Archivado del original el 28 de noviembre de 2014. Consultado el 13 de octubre de 2014. SilverStripe requiere PHP 5.3.2 o superior . 
  308. Ide, Andy (31 de enero de 2013). "PHP simplemente crece y crece" . Recuperado el 1 de abril de 2013 .
  309. "Estadísticas de uso y cuota de mercado de PHP versión 4 para sitios web, febrero de 2026" . w3techs.com .
  310. "Estadísticas de uso y cuota de mercado de PHP versión 5 para sitios web, febrero de 2026" . w3techs.com .
  311. "Estadísticas de uso y cuota de mercado de PHP versión 7 para sitios web, febrero de 2026" . w3techs.com .
  312. "Estadísticas de uso y cuota de mercado de PHP versión 8 para sitios web, febrero de 2026" . w3techs.com .
  313. "Base de datos nacional de vulnerabilidades (NVD) Estadísticas de búsqueda de vulnerabilidades" . Consultado el 22 de noviembre de 2019 .
  314. "Vulnerabilidades relacionadas con PHP en la Base de Datos Nacional de Vulnerabilidades" . 5 de julio de 2012. Archivado del original el 28 de junio de 2009. Consultado el 1 de abril de 2013 .
  315. "Notas de la reunión de desarrolladores, noviembre de 2005" .
  316. "Decisión sobre el modo de contaminación, noviembre de 2007" . Archivado del original el 26 de febrero de 2009.
  317. "PHP: rfc:taint" . wiki.php.net .
  318. "Proyecto Hardened-PHP" . 15 de agosto de 2008. Archivado del original el 24 de febrero de 2019. Consultado el 22 de agosto de 2019 .
  319. "Documentación de Snuffleupagus" .
  320. "Seguridad: Uso de variables globales de registro" . Manual de PHP . PHP.net. Archivado del original el 27 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  321. "Citas mágicas" . Manual de PHP . PHP.net. Archivado del original el 8 de febrero de 2014. Consultado el 17 de enero de 2014 .
  322. "Directiva de configuración 'engine'" . PHP: Configuración en tiempo de ejecución . PHP.net . Consultado el 13 de febrero de 2014 .
  323. "Vulnerabilidad de seguridad PHP con imágenes GIF" . 22 de junio de 2007. Archivado del original el 27 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  324. "Vulnerabilidad de seguridad de PHP con imágenes GIF" . Blog de PHP Classes. 2007-06-20 . Consultado el 22 de septiembre de 2013 .
  325. "Pasando código PHP malicioso a través de getimagesize()" . 4 de junio de 2007. Archivado del original el 21 de septiembre de 2013. Consultado el 22 de septiembre de 2013 .
  326. "Directiva de configuración 'enable_dl'" . PHP: Configuración en tiempo de ejecución . PHP.net . Consultado el 13 de febrero de 2014 .
  327. "Referencia a la función PHP: dl()" . PHP.net . Consultado el 22 de septiembre de 2013 .
  328. "Mi proveedor de alojamiento no soluciona el problema del troyano" . Charla sobre alojamiento web . Consultado el 22 de septiembre de 2013 .
  329. Raz0r (25 de enero de 2013). "Restablecimiento de contraseña de administrador del Foro de Máquinas Simples <= 2.0.3" . Raz0R.name – Seguridad de aplicaciones web .{{cite news}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  330. ^ Seguridad de Nibble. «EXPLICACIÓN DE TYPO3-SA-2010-020, TYPO3-SA-2010-022» .
  331. "Криптостойкость и небезопасное сравнение" . ahack.ru (en ruso). Archivado desde el original el 4 de julio de 2017.
  332. Krawczyk, Pawel (2013). "Ataques más comunes a aplicaciones web" . IPSec.pl. Archivado del original el 15 de abril de 2015. Recuperado el 15 de abril de 2015 .
  333. Krawczyk, Pawel (2013). "¿Cuáles son las fallas de aplicación "más críticas"? En el nuevo OWASP Top 10" . IPSec.pl . Recuperado el 15 de abril de 2015 .
  334. "PHP: Rand – Manual" .
  335. "PHP: Mt_rand – Manual" .
  336. "PHP: Random_int – Manual" .
  337. Argyros, George; Kiayias, Aggelos (10 de agosto de 2012). "Olvidé tu contraseña: ataques de aleatoriedad contra aplicaciones PHP" . usenix.org . USENIX . Consultado el 19 de abril de 2024 .
  338. "Soporte PHP para PHP 7.2 – 8.0 | PHP LTS | Zend by Perforce" . Consultado el 23 de mayo de 2024 .
  339. "Página de soporte a largo plazo de Pagely PHP" . Pagely . Consultado el 14 de septiembre de 2024 .

Lecturas adicionales

  • Ford, Paul (11 de junio de 2015). "¿Qué es el código?" . Bloomberg Businessweek . ¿Cuál es el mínimo absoluto que debo saber sobre PHP?
  • Sitio web oficialEdita esto en Wikidata