0% found this document useful (0 votes)
351 views18 pages

1 Historys: 1.1 Early History

PHP is a scripting language originally created in 1994 for web development. It allows code to be embedded into HTML and executed by a web server. PHP was originally called Personal Home Page Tools but now stands for PHP: Hypertext Preprocessor. It has become a popular open source language used widely for web development. Major versions include PHP 3, 4, 5, and 7, with PHP 7 bringing significant performance improvements through reworking the Zend Engine.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
351 views18 pages

1 Historys: 1.1 Early History

PHP is a scripting language originally created in 1994 for web development. It allows code to be embedded into HTML and executed by a web server. PHP was originally called Personal Home Page Tools but now stands for PHP: Hypertext Preprocessor. It has become a popular open source language used widely for web development. Major versions include PHP 3, 4, 5, and 7, with PHP 7 bringing significant performance improvements through reworking the Zend Engine.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

PHP

This article is about the scripting language. For other 1.1


uses, see PHP (disambiguation).

Early history

PHP is a server-side scripting language designed for web


development but also used as a general-purpose programming language. Originally created by Rasmus Lerdorf in
1994,[4] the PHP reference implementation is now produced by The PHP Group.[5] PHP originally stood for
Personal Home Page,[4] but it now stands for the recursive
acronym PHP: Hypertext Preprocessor.[6]
PHP code may be embedded into HTML code, or
it can be used in combination with various web template systems, web content management systems and web
frameworks. PHP code is usually processed by a PHP
interpreter implemented as a module in the web server or
as a Common Gateway Interface (CGI) executable. The
web server combines the results of the interpreted and executed PHP code, which may be any type of data, including images, with the generated web page. PHP code may
also be executed with a command-line interface (CLI)
and can be used to implement standalone graphical applications.[7]

Rasmus
Lerdorf, who wrote the original Common Gateway Interface (CGI) component, together with Andi Gutmans and
Zeev Suraski, who rewrote the parser that formed PHP 3.
PHP development began in 1995 when Rasmus Lerdorf wrote several Common Gateway Interface (CGI)
programs in C,[10][11][12] which he used to maintain his
personal homepage. He extended them to work with web
forms and to communicate with databases, and called
this implementation Personal Home Page/Forms Interpreter or PHP/FI.

The standard PHP interpreter, powered by the Zend Engine, is free software released under the PHP License.
PHP has been widely ported and can be deployed on
most web servers on almost every operating system and
platform, free of charge.[8]

PHP/FI could be used to build simple, dynamic web applications. To accelerate bug reporting and improve the
code, Lerdorf initially announced the release of PHP/FI
as Personal Home Page Tools (PHP Tools) version 1.0
on the Usenet discussion group comp.infosystems.www.
authoring.cgi on June 8, 1995.[13][14] This release already
had the basic functionality that PHP has as of 2013. This
included Perl-like variables, form handling, and the ability to embed HTML. The syntax resembled that of Perl
but was simpler, more limited and less consistent.[5]

The PHP language evolved without a written formal specication or standard until 2014, leaving the canonical
PHP interpreter as a de facto standard. Since 2014 work
has gone on to create a formal PHP specication.[9]
During the 2010s there have been increased eorts towards standardisation and code sharing in PHP applications by projects such as PHP-FIG in the form of PSRinitiatives as well as Composer dependency manager and
the Packagist repository.

Early PHP was not intended to be a new programming


language, and grew organically, with Lerdorf noting in
retrospect: I dont know how to stop it, there was never
any intent to write a programming language [] I have
absolutely no idea how to write a programming language,
I just kept adding the next logical step on the way.[15]
A development team began to form and, after months
of work and beta testing, ocially released PHP/FI 2 in
November 1997.
The fact that PHP was not originally designed but instead was developed organically has led to inconsistent
naming of functions and inconsistent ordering of their
parameters.[16] In some cases, the function names were
chosen to match the lower-level libraries which PHP was
wrapping,[17] while in some very early versions of PHP
the length of the function names was used internally as a

Historys

1 HISTORYS

hash function, so names were chosen to improve the dis- the only available Microsoft Windows binary distributribution of hash values.[18]
tions were 32-bit x86 builds,[30][31] requiring Windows
32-bit compatibility mode while using Internet Information Services (IIS) on a 64-bit Windows platform. PHP
version 5.5 made the 64-bit x86-64 builds available for
1.2 PHP 3 and 4
Microsoft Windows.[32]

1.4 PHP 6 and Unicode


PHP received mixed reviews due to lacking native
Unicode support at the core language level.[33][34] In
2005, a project headed by Andrei Zmievski was initiated to bring native Unicode support throughout PHP,
by embedding the International Components for Unicode
(ICU) library, and representing text strings as UTF-16
internally.[35] Since this would cause major changes both
to the internals of the language and to user code, it was
planned to release this as version 6.0 of the language,
along with other major features then in development.[36]
This is an example of custom php code on a computer screen.

Zeev Suraski and Andi Gutmans rewrote the parser in


1997 and formed the base of PHP 3, changing the languages name to the recursive acronym PHP: Hypertext
Preprocessor.[5][19] Afterwards, public testing of PHP
3 began, and the ocial launch came in June 1998.
Suraski and Gutmans then started a new rewrite of PHPs
core, producing the Zend Engine in 1999.[20] They also
founded Zend Technologies in Ramat Gan, Israel.[5]
On May 22, 2000, PHP 4, powered by the Zend Engine 1.0, was released.[5] As of August 2008 this branch
reached version 4.4.9. PHP 4 is no longer under development nor will any security updates be released.[21][22]

1.3

PHP 5

However, a shortage of developers who understood the


necessary changes, and performance problems arising
from conversion to and from UTF-16, which is rarely
used in a web context, led to delays in the project.[37]
As a result, a PHP 5.3 release was created in 2009,
with many non-Unicode features back-ported from PHP
6, notably namespaces. In March 2010, the project in
its current form was ocially abandoned, and a PHP
5.4 release was prepared containing most remaining nonUnicode features from PHP 6, such as traits and closure
re-binding.[38] Initial hopes were that a new plan would
be formed for Unicode integration, but as of 2014 none
have been adopted.

1.5 PHP 7
During 2014 and 2015, a new major PHP version was
developed, which was numbered PHP 7. The numbering of this version involved some debate.[39] While the
PHP 6 Unicode experiment had never been released, several articles and book titles referenced the PHP 6 name,
which might have caused confusion if a new release were
to reuse the name.[40] After a vote, the name PHP 7 was
chosen.[41]

On July 14, 2004, PHP 5 was released, powered by


the new Zend Engine II.[5] PHP 5 included new features such as improved support for object-oriented programming, the PHP Data Objects (PDO) extension
(which denes a lightweight and consistent interface
for accessing databases), and numerous performance
enhancements.[23] In 2008 PHP 5 became the only stable The foundation of PHP 7 is a PHP branch that was
version under development. Late static binding had been originally dubbed PHP next generation (phpng). It was
authored by Dmitry Stogov, Xinchen Hui and Nikita
missing from PHP and was added in version 5.3.[24][25]
Popov,[42] and aimed to optimize PHP performance
Many high-prole open-source projects ceased to support by refactoring the Zend Engine while retaining nearPHP 4 in new code as of February 5, 2008, because of complete language compatibility.[43] As of 14 July 2014,
the GoPHP5 initiative,[26] provided by a consortium of WordPress-based benchmarks, which served as the main
PHP developers promoting the transition from PHP 4 to benchmark suite for the phpng project, showed an almost
PHP 5.[27][28]
100% increase in performance. Changes from phpng are
Over time, PHP interpreters became available on most also expected to make it easier to improve performance
existing 32-bit and 64-bit operating systems, either by in the future, as more compact data structures and other
building them from the PHP source code, or by using changes are seen as better suited for a successful migrapre-built binaries.[29] For the PHP versions 5.3 and 5.4, tion to a just-in-time (JIT) compiler.[44] Because of the

1.6

Release history

signicant changes, the reworked Zend Engine is called type declarations, and support for the scalar types (inteZend Engine 3, succeeding Zend Engine 2 used in PHP ger, oat, string, and boolean) in parameter and return
5.[45]
type declarations.[60]
Because of major internal changes in phpng, it must
receive a new major version number of PHP, rather
than a minor PHP 5 release, according to PHPs release
process.[46] Major versions of PHP are allowed to break
backward-compatibility of code and therefore PHP 7 presented an opportunity for other improvements beyond phpng that require backward-compatibility breaks. In particular, it involved the following changes:
Many fatal- or recoverable-level legacy PHP error mechanisms were replaced with modern objectoriented exceptions[47]
The syntax for variable dereferencing was reworked
to be internally more consistent and complete, allowing the use of the operators ->, [], (), {},
and :: with arbitrary meaningful left-hand-side
expressions[48]

1.6 Release history


Beginning on June 28, 2011, the PHP Group implemented a timeline for the release of new versions of
PHP.[46] Under this system, at least one release should occur every month. Once per year, a minor release should
occur which may include new features. Every minor release should at least be supported for two years with security and bug xes, followed by at least one year of only
security xes, for a total of a three-year release process
for every minor release. No new features, unless small
and self-contained, are to be introduced into a minor release during the three-year release process.

2 Mascot

Support for legacy PHP 4-style constructor methods


was deprecated[49]
The behavior of the foreach statement was changed
to be more predictable[50]
Constructors for the few classes built-in to PHP
which returned null upon failure were changed to
throw an exception instead, for consistency[51]
Several unmaintained or deprecated server application programming interfaces (SAPIs) and extensions
were removed from the PHP core, most notably the
legacy mysql extension[52]
The behavior of the list() operator was changed to
The elePHPant, PHP mascot.
remove support for strings[53]
Support for legacy ASP-style PHP code delimiters The mascot of the PHP project is the elePHPant, a blue
(<% and %>, <script language=php> and </script>) elephant with the PHP logo on its side, designed by Vincent Pontier[88] in 1998.[89] The elePHPant is sometimes
was removed[54]
dierently colored when in plush toy form.
An oversight allowing a switch statement to have
multiple default clauses was xed[55]
Support for hexadecimal number support in some 3 Syntax
implicit conversions from strings to number types
was removed[56]
Main article: PHP syntax and semantics
The left-shift and right-shift operators were changed
to behave more consistently across platforms[57]
The following Hello, World!" program is written in PHP
code embedded in an HTML document:
Conversions between integers and oating point
numbers were tightened and implemented more <!DOCTYPE html> <html> <head> <title>PHP
Test</title> </head> <body> <?php echo '<p>Hello
consistently across platforms[57][58]
World</p>'; ?> </body> </html>
PHP 7 also included new language features. Most
notably, it introduces return type declarations for However, as no requirement exists for PHP code to
functions,[59] which complement the existing parameter be embedded in HTML, the simplest version of Hello,

3 SYNTAX

World! may be written like this, with the closing tag omit- negative), octal, hexadecimal, and binary notations.
ted as preferred in les containing pure PHP code[90]
Floating point numbers are also stored in a platform<?='Hello world';
specic range. They can be specied using oating point
notation, or two forms of scientic notation.[102] PHP has
a native Boolean type that is similar to the native Boolean
The PHP interpreter only executes PHP code within its
delimiters. Anything outside its delimiters is not pro- types in Java and C++. Using the Boolean type conversion rules, non-zero values are interpreted as true and zero
cessed by PHP, although non-PHP text is still subject
[102]
to control structures described in PHP code. The most as false, as in Perl and C++.
common delimiters are <?php to open and ?> to close
PHP sections. The shortened form <? also exists. This
short delimiter makes script les less portable, since support for them can be disabled in the local PHP conguration and it is therefore discouraged.[91][92] However,
there is no recommendation against the use of the echo
short tag <?=.[93] Prior to PHP 5.4.0, this short syntax
for echo() only works with the short_open_tag conguration setting enabled, while for PHP 5.4.0 and later it is
always available.[91][94][95] The purpose of all these delimiters is to separate PHP code from non-PHP content,
such as JavaScript code or HTML markup.[96]

The null data type represents a variable that has no value;


NULL is the only allowed value for this data type.[102]

3.1

In lieu of function pointers, functions in PHP can be


referenced by a string containing their name. In this
manner, normal PHP functions can be used, for example, as callbacks or within function tables.[106] Userdened functions may be created at any time without being prototyped.[105][106] Functions may be dened inside
code blocks, permitting a run-time decision as to whether
or not a function should be dened. There is a func-

Variables of the resource type represent references to


resources from external sources. These are typically created by functions from a particular extension, and can
only be processed by functions from the same extension;
examples include le, image, and database resources.[102]

Arrays can contain elements of any type that PHP can


handle, including resources, objects, and even other
arrays. Order is preserved in lists of values and in
hashes with both keys and values, and the two can be
intermingled.[102] PHP also supports strings, which can
The rst form of delimiters, <?php and ?>, in XHTML be used with single quotes, double quotes, nowdoc or
and other XML documents, creates correctly formed heredoc syntax.[103]
XML processing instructions.[97] This means that the resulting mixture of PHP code and other markup in the The Standard PHP Library (SPL) attempts to solve standard problems and implements ecient data access inserver-side le is itself well-formed XML.
terfaces and classes.[104]
Variables are prexed with a dollar symbol, and a type
does not need to be specied in advance. PHP 5 introduced type hinting that allows functions to force their pa- 3.2 Functions
rameters to be objects of a specic class, arrays, interfaces or callback functions. However, before PHP 7.0, PHP denes a large array of functions in the core lantype hints could not be used with scalar types such as in- guage and many are also available in various extensions;
teger or string.[60]
these functions are well documented in the online PHP
[105]
However, the built-in library has a
Unlike function and class names, variable names are documentation.
wide
variety
of
naming
conventions and associated inconcase sensitive. Both double-quoted ("") and heredoc
sistencies,
as
described
under history above.
strings provide the ability to interpolate a variables value
[98]
into the string.
PHP treats newlines as whitespace in Custom functions may be dened by the developer, e.g.:
the manner of a free-form language, and statements are
terminated by a semicolon.[99] PHP has three types of function myAge($birthYear) { // denes a function,
comment syntax: /* */ marks block and inline comments; this one is named myAge $yearsOld = date('Y') // as well as # are used for one-line comments.[100] The $birthYear; // calculates the age return $yearsOld . '
echo statement is one of several facilities PHP provides year' . ($yearsOld != 1 ? 's : ''); // returns the age in a
descriptive form } echo 'I am currently ' . myAge(1981)
to output text, e.g., to a web browser.
. ' old.'; // outputs the text concatenated // with the
In terms of keywords and language syntax, PHP is similar return value of myAge() // As the result of this syntax,
to the C style syntax. if conditions, for and while loops, myAge() is called.
and function returns are similar in syntax to languages
such as C, C++, C#, Java and Perl.
In 2016, the output of the above sample program is 'I am
currently 35 years old.'

Data types

PHP stores integers in a platform-dependent range, either a 64-bit or 32-bit signed integer equivalent to the Clanguage long type. Unsigned integers are converted to
signed values in certain situations; this behavior is dierent from that of other programming languages.[101] Integer variables can be assigned using decimal (positive and

3.3

Object-oriented programming

tion_exists function that determines whether a function


with a given name has already been dened. Function
calls must use parentheses, with the exception of zeroargument class constructor functions called with the PHP
operator new, in which case parentheses are optional.

easier for programmers using the language. Object handling was completely rewritten for PHP 5, expanding
the feature set and enhancing performance.[110] In previous versions of PHP, objects were handled like value
types.[110] The drawback of this method was that code
Until PHP 5.3, support for anonymous functions and had to make heavy use of PHPs reference variables if
closures did not exist in PHP. While create_function() ex- it wanted to modify an object it was passed rather than
ists since PHP 4.0.1, it is merely a thin wrapper around creating a copy of it. In the new approach, objects are
referenced by handle, and not by value.
eval() that allows normal PHP functions to be created dur[107]
ing program execution.
PHP 5.3 added syntax to de- PHP 5 introduced private and protected member varine an anonymous function or closure[108] which can ables and methods, along with abstract classes, nal
capture variables from the surrounding scope:
classes, abstract methods, and nal methods. It also infunction getAdder($x) { return function($y) use ($x) troduced a standard way of declaring constructors and
{ return $x + $y; }; } $adder = getAdder(8); echo destructors, similar to that of other object-oriented languages such as C++, and a standard exception handling
$adder(2); // prints 10
model. Furthermore, PHP 5 added interfaces and allowed for multiple interfaces to be implemented. There
In the example above, getAdder() function creates a clo- are special interfaces that allow objects to interact with
sure using passed argument $x (the keyword use imports the runtime system. Objects implementing ArrayAccess
a variable from the lexical context), which takes an ad- can be used with array syntax and objects implementing
ditional argument $y, and returns the created closure to Iterator or IteratorAggregate can be used with the forethe caller. Such a function is a rst-class object, meaning ach language construct. There is no virtual table feature
that it can be stored in a variable, passed as a parameter in the engine, so static variables are bound with a name
to other functions, etc.[109]
instead of a reference at compile time.[111]
Unusually for a dynamically typed language, PHP supports type declarations on function parameters, which are
enforced at runtime. This has been supported for classes
and interfaces since PHP 5.0, for arrays since PHP 5.1,
for callables since PHP 5.4, and scalar (integer, oat,
string and boolean) types since PHP 7.0.[60] PHP 7.0 also
has type declarations for function return types, expressed
by placing the type name after the list of parameters, preceded by a colon.[59] For example, the getAdder function
from the earlier example could be annotated with types
like so in PHP 7:

If the developer creates a copy of an object using the reserved word clone, the Zend engine will check whether a
__clone() method has been dened. If not, it will call a
default __clone() which will copy the objects properties.
If a __clone() method is dened, then it will be responsible for setting the necessary properties in the created
object. For convenience, the engine will supply a function that imports the properties of the source object, so
the programmer can start with a by-value replica of the
source object and only override properties that need to be
changed.[112]

function getAdder(int $x): \Closure { return function(int


$y) use ($x) : int { return $x + $y; }; } $adder = getAdder(8); echo $adder(2); // prints 10 echo $adder(null);
// throws an exception because an incorrect type was
passed $adder = getAdder([]); // would also throw an
exception

The following is a basic example of object-oriented programming in PHP:

By default, scalar type declarations follow weak typing


principles. So, for example, if a parameters type is int,
PHP would allow not only integers, but also convertible
numeric strings, oats or booleans to be passed to that
function, and would convert them.[60] However, PHP 7
has a strict typing mode which, when used, disallows
such conversions for function calls and returns within a
le.[60]

3.3

Object-oriented programming

class Person { public $rstName; public $lastName;


public function __construct($rstName, $lastName = '')
{ // optional second argument $this->rstName = $rstName; $this->lastName = $lastName; } public function
greet() { return 'Hello, my name is ' . $this->rstName
. (($this->lastName != '') ? (' ' . $this->lastName) :
'') . '.'; } public static function staticGreet($rstName,
$lastName) { return 'Hello, my name is ' . $rstName . '
' . $lastName . '.'; } } $he = new Person('John', 'Smith');
$she = new Person('Sally', 'Davis); $other = new Person('iAmine'); echo $he->greet(); // prints Hello, my
name is John Smith. echo '<br />'; echo $she->greet();
// prints Hello, my name is Sally Davis. echo '<br
/>'; echo $other->greet(); // prints Hello, my name is
iAmine. echo '<br />'; echo Person::staticGreet('Jane',
'Doe'); // prints Hello, my name is Jane Doe.

Basic object-oriented programming functionality was


The visibility of PHP properties and methods is dened
added in PHP 3 and improved in PHP 4.[5] This allowed
using the keywords public, private, and protected. The
for PHP to gain further abstraction, making creative tasks

default is public, if only var is used; var is a synonym


for public. Items declared public can be accessed everywhere. protected limits access to inherited classes (and
to the class that denes the item). private limits visibility only to the class that denes the item.[113] Objects
of the same type have access to each others private and
protected members even though they are not the same
instance. PHPs member visibility features have sometimes been described as highly useful.[114] However,
they have also sometimes been described as at best irrelevant and at worst positively harmful.[115]

Implementations

DEVELOPMENT AND COMMUNITY

Parrot a virtual machine designed to run dynamic languages eciently; Pipp transforms the
PHP source code into the Parrot intermediate representation, which is then translated into the Parrots
bytecode and executed by the virtual machine.
Phalanger compiles PHP into Common Intermediate Language (CIL) bytecode
HipHop developed at Facebook and available as
open source, it transforms the PHP scripts into C++
code and then compiles the resulting code, reducing
the server load up to 50%. In early 2013, Facebook
deprecated it in favor of HHVM due to multiple reasons, including deployment diculties and lack of
support for the whole PHP language, including the
create_function() and eval() constructs.[121]

The original, only complete and most widely used PHP


implementation is powered by the Zend Engine and
known simply as PHP. To disambiguate it from other implementations, it is sometimes unocially referred to as 5 Licensing
Zend PHP. The Zend Engine compiles PHP source
code on-the-y into an internal format that it can execute,
PHP is free software released under the PHP License,
thus it works as an interpreter.[116][117] It is also the refwhich stipulates that:[122]
erence implementation of PHP, as PHP has no formal
specication, and so the semantics of Zend PHP dene
Products derived from this software may
the semantics of PHP itself. Due to the complex and nunot be called PHP, nor may PHP appear
anced semantics of PHP, dened by how Zend works, it
in their name, without prior written permission
is dicult for competing implementations to oer comfrom [email protected]. You may indicate that
plete compatibility.
your software works in conjunction with PHP
PHPs single-request-per-script-execution model, and the
by saying "Foo for PHP instead of calling it
fact the Zend Engine is an interpreter, leads to inePHP Foo or phpfoo.
ciency; as a result, various products have been developed
to help improve PHP performance. In order to speed up
execution time and not have to compile the PHP source This restriction on use of PHP makes the PHP License
code every time the web page is accessed, PHP scripts incompatible with the General Public License (GPL),
can also be deployed in the PHP engines internal for- while the Zend License is incompatible due to an adclause similar to that of the original BSD limat by using an opcode cache, which works by caching vertising
[123]
cense.
the compiled form of a PHP script (opcodes) in shared
memory to avoid the overhead of parsing and compiling
the code every time the script runs. An opcode cache,
Zend Opcache, is built into PHP since version 5.5.[118] 6 Development and community
Another example of a widely used opcode cache is the
Alternative PHP Cache (APC), which is available as a PHP includes various free and open-source libraries in its
PECL extension.[119]
source distribution, or uses them in resulting PHP binary
While Zend PHP is still the most popular implementa- builds. PHP is fundamentally an Internet-aware system
tion, several other implementations have been developed. with built-in modules for accessing File Transfer ProtoSome of these are compilers or support JIT compilation, col (FTP) servers and many database servers, including
and hence oer performance benets over Zend PHP at PostgreSQL, MySQL, Microsoft SQL Server and SQLite
the expense of lacking full PHP compatibility. Alterna- (which is an embedded database), LDAP servers, and
others. Numerous functions familiar to C programmers,
tive implementations include the following:
such as those in the stdio family, are available in standard
[124]
HipHop Virtual Machine (HHVM) developed at PHP builds.
Facebook and available as open source, it converts
PHP code into a high-level bytecode (commonly
known as an intermediate language), which is then
translated into x86-64 machine code dynamically at
runtime by a just-in-time (JIT) compiler, resulting
in up to 6 performance improvements.[120]

PHP allows developers to write extensions in C to add


functionality to the PHP language. PHP extensions can
be compiled statically into PHP or loaded dynamically
at runtime. Numerous extensions have been written
to add support for the Windows API, process management on Unix-like operating systems, multibyte strings

7
(Unicode), cURL, and several popular compression formats. Other PHP features made available through extensions include integration with IRC, dynamic generation of images and Adobe Flash content, PHP Data Objects (PDO) as an abstraction layer used for accessing
databases,[125][126][127][128][129][130][131] and even speech
synthesis. Some of the languages core functions, such
as those dealing with strings and arrays, are also implemented as extensions.[132] The PHP Extension Community Library (PECL) project is a repository for extensions
to the PHP language.[133]

PHP has a direct module interface called SAPI for different web servers;[142] in case of PHP 5 and Apache 2.0
on Windows, it is provided in form of a DLL le called
php5apache2.dll,[143] which is a module that, among
other functions, provides an interface between PHP and
the web server, implemented in a form that the server understands. This form is what is known as a SAPI.

The PHP Group consists of ten people (as of 2015):


Thies C. Arntzen, Stig Bakken, Shane Caraveo,
Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha
Schumann, Zeev Suraski, Jim Winstead, Andrei
Zmievski.[135]

mon way of installing PHP-GTK is compiling it from the


source code.[145]

There are dierent kinds of SAPIs for various web server


extensions. For example, in addition to those listed
above, other SAPIs for the PHP language include the
Common Gateway Interface (CGI) and command-line inSome other projects, such as Zephir, provide the ability terface (CLI).[142][144]
for PHP extensions to be created in a high-level language PHP can also be used for writing desktop graphical user
and compiled into native PHP extensions. Such an ap- interface (GUI) applications, by using the PHP-GTK exproach, instead of writing PHP extensions directly in C, tension. PHP-GTK is not included in the ocial PHP
simplies the development of extensions and reduces the distribution,[137] and as an extension it can be used only
time required for programming and testing.[134]
with PHP versions 5.1.0 and newer. The most com-

When PHP is installed and used in cloud environments,


software development kits (SDKs) are provided for using
cloud-specic features. For example:

Zend Technologies provides a PHP Certication based on


PHP 5.5[136] exam for programmers to become certied
PHP developers.

Amazon Web Services provides the AWS SDK for


PHP[146]

Windows Azure can be used with the Windows


Azure SDK for PHP.[147]

Installation and conguration

There are two primary ways for adding support for PHP
to a web server as a native web server module, or
as a CGI executable. PHP has a direct module interface called Server Application Programming Interface
(SAPI), which is supported by many web servers including Apache HTTP Server, Microsoft IIS, Netscape (now
defunct) and iPlanet. Some other web servers, such as
OmniHTTPd, support the Internet Server Application
Programming Interface (ISAPI), which is a Microsoft's
web server module interface. If PHP has no module support for a web server, it can always be used as a Common
Gateway Interface (CGI) or FastCGI processor; in that
case, the web server is congured to use PHPs CGI executable to process all requests to PHP les.[137]
PHP-FPM (FastCGI Process Manager) is an alternative
FastCGI implementation for PHP, bundled with the ocial PHP distribution since version 5.3.3.[138] When compared to the older FastCGI implementation, it contains
some additional features, mostly useful for heavily loaded
web servers.[139]
When using PHP for command-line scripting, a PHP
command-line interface (CLI) executable is needed.
PHP supports a CLI SAPI as of PHP 4.3.0.[140] The main
focus of this SAPI is developing shell applications using
PHP. There are quite a few dierences between the CLI
SAPI and other SAPIs, although they do share many of
the same behaviors.[141]

Numerous conguration options are supported, aecting


both core PHP features and extensions.[148][149] Conguration le php.ini is searched for in dierent locations,
depending on the way PHP is used.[150] The conguration le is split into various sections,[151] while some of
the conguration options can be also set within the web
server conguration.[152]

8 Use
Web cache

Linux kernel

Squid
Polipo
Trac server

AppArmor
SELinux
Smack
TOMOYO

Process Scheduler

Web server
Apache
Cherokee
Lighttpd
Nginx

CGI scripting
Perl
PHP
Python

Database
MariaDB
MySQL
Drizzle

Netlter

Environment: CCC

Hardware
CPU
&
RAM

Crackers
Botnets for DDoS-attacks
cracking attempts
...

Attacks
stave o

Network scheduler
NIC
device
driver
kmod-fs-ext4
kmod-fs-btrfs
Lustre
...

Competitors

&
Requests

Linux network stack

compete for customers

serve

Networking
hardware

Internet
Responses

Customers

low latency

Storage
SATA
SAS
RAID
iSCSI
NAS

want attendance

Botnets
DDoS-Attacks

A broad overview of the LAMP software bundle, displayed here


together with Squid.

PHP is a general-purpose scripting language that is especially suited to server-side web development, in which

9 SECURITY

case PHP generally runs on a web server. Any PHP code


in a requested le is executed by the PHP runtime, usually
to create dynamic web page content or dynamic images
used on websites or elsewhere.[153] It can also be used for
command-line scripting and client-side graphical user interface (GUI) applications. PHP can be deployed on most
web servers, many operating systems and platforms, and
can be used with many relational database management
systems (RDBMS). Most web hosting providers support
PHP for use by their clients. It is available free of charge,
and the PHP Group provides the complete source code
for users to build, customize and extend for their own
use.[8]
Local Computer
http://www.example.com/login.php

Web server

Internet

The web server is


processing the request

PHP interpreter
page in html
HARD
DISK
MySQL db

Dynamic web page: example of server-side scripting (PHP and


MySQL).

PHP acts primarily as a lter,[154] taking input from a le


or stream containing text and/or PHP instructions and
outputting another stream of data. Most commonly the
output will be HTML, although it could be JSON, XML
or binary data such as image or audio formats. Since PHP
4, the PHP parser compiles input to produce bytecode for
processing by the Zend Engine, giving improved performance over its interpreter predecessor.[155]
Originally designed to create dynamic web pages, PHP
now focuses mainly on server-side scripting,[156] and it is
similar to other server-side scripting languages that provide dynamic content from a web server to a client, such
as Microsoft's ASP.NET, Sun Microsystems' JavaServer
Pages,[157] and mod_perl. PHP has also attracted the
development of many software frameworks that provide
building blocks and a design structure to promote rapid
application development (RAD). Some of these include
PRADO, CakePHP, Symfony, CodeIgniter, Laravel, Yii
Framework, Phalcon and Zend Framework, oering features similar to other web frameworks.
The LAMP architecture has become popular in the web
industry as a way of deploying web applications.[158] PHP
is commonly used as the P in this bundle alongside Linux,
Apache and MySQL, although the P may also refer to
Python, Perl, or some mix of the three. Similar packages,
WAMP and MAMP, are also available for Windows and
OS X, with the rst letter standing for the respective operating system. Although both PHP and Apache are provided as part of the Mac OS X base install, users of these
packages seek a simpler installation mechanism that can
be more easily kept up to date.

HTTP Server module.[159] As of October 2010, PHP


was used as the server-side programming language on
75% of all websites whose server-side programming
language was known[160] (as of February 2014, the
percentage had reached 82%[161] ), and PHP was the
most-used open source software within enterprises.[162]
Web content management systems written in PHP
include MediaWiki,[163] Joomla,[164] eZ Publish, eZ
Platform, SilverStripe,[165] WordPress,[166] Drupal,[167]
Moodle,[168] the user-facing portion of Facebook,[169]
and Digg.[170]
For specic and more advanced usage scenarios, PHP offers a well dened and documented way for writing custom extensions in C or C++.[171][172][173][174][175][176][177]
Besides extending the language itself in form of additional libraries, extensions are providing a way for improving execution speed where it is critical and there is
room for improvements by using a true compiled language.[178][179] PHP also oers well dened ways for embedding itself into other software projects. That way PHP
can be easily used as an internal scripting language for
another project, also providing tight interfacing with the
projects specic internal data structures.[180]
PHP received mixed reviews due to lacking support for
multithreading at the core language level,[181] though using threads is made possible by the pthreads PECL
extension.[182][183]
As of January 2013, PHP was used in more than 240 million websites (39% of those sampled) and was installed on
2.1 million web servers.[184]

9 Security
In 2013, 9% of all vulnerabilities listed by the National
Vulnerability Database were linked to PHP;[185] historically, about 30% of all vulnerabilities listed since 1996 in
this database are linked to PHP. Technical security aws
of the language itself or of its core libraries are not frequent (22 in 2009, about 1% of the total although PHP
applies to about 20% of programs listed).[186] Recognizing that programmers make mistakes, some languages
include taint checking to automatically detect the lack
of input validation which induces many issues. Such a
feature is being developed for PHP,[187] but its inclusion into a release has been rejected several times in the
past.[188][189]
There are advanced protection patches such as Suhosin
and Hardening-Patch, especially designed for web hosting
environments.[190]

There are certain language features and conguration


parameters (primarily the default values for such runtime settings) that make PHP applications prone to seAs of April 2007, over 20 million Internet domains curity issues. Among these, magic_quotes_gpc and
had web services hosted on servers with PHP installed register_globals[191] conguration directives are the best
and mod_php was recorded as the most popular Apache known; the latter made any URL parameters become

9
PHP variables, opening a path for serious security vulnerabilities by allowing an attacker to set the value of any
uninitialized global variable and interfere with the execution of a PHP script. Support for "magic quotes" and
register globals has been deprecated as of PHP 5.3.0,
and removed as of PHP 5.4.0.[192]
Another example for the runtime settings vulnerability
comes from failing to disable PHP execution (via engine conguration directive)[193] for the directory where
uploaded images are stored; leaving the default settings
can result in execution of malicious PHP code embedded
within the uploaded images.[194][195][196] Also, leaving enabled the dynamic loading of PHP extensions (via enable_dl conguration directive)[197] in a shared web hosting environment can lead to security issues.[198][199]

11 References
[1] Lerdorf, Rasmus (2007-04-26). PHP on Hormones
history of PHP presentation by Rasmus Lerdorf given at
the MySQL Conference in Santa Clara, California. The
Conversations Network. Retrieved 2009-12-11.
[2] News Archive 2016: PHP 7.0.9 Released. php.net.
2016-07-20. Retrieved 2016-07-20.
[3] News Archive 2016: PHP 7.1.0 Beta 1 Released.
2015-07-21. Retrieved 2016-07-21.
[4] History of PHP. php.net.
[5] History of PHP and related projects. The PHP Group.
Retrieved 2008-02-25.

Also, implied type conversions that result in incompati- [6]


ble values being treated as identical against the programmers intent can lead to security issues. For example, the [7]
result of the comparison 0e1234 == 0 comparison is true
because the rst compared value is treated as scientic [8]
notation having the value (0101234 ), i.e. zero. This feature resulted in authentication vulnerabilities in Simple
Machines Forum,[200] Typo3[201] and phpBB[202] when [9]
MD5 password hashes were compared. Instead, either
the function strcmp or the identity operator (===) should
[10]
be used; 0e1234 === 0 results in false.[203]
In a 2013 analysis of over 170,000 website defacements,
published by Zone-H, the most frequently (53%) used
technique was exploitation of le inclusion vulnerability,
mostly related to insecure usage of the PHP functions include, require, and allow_url_fopen.[204][205]

PHP Manual: Preface, www.php.net


Introduction: What can PHP do?". PHP Manual. Retrieved 2009-03-05.
Embedding PHP in HTML. O'Reilly. 2001-05-03. Retrieved 2008-02-25.
Jackson, Joab (2014-07-31). PHP gets a formal specication, at last. ITworld. IDG.
Lerdorf, Rasmus (2012-07-20). I wonder why people
keep writing that PHP was ever written in Perl. It never
was. #php. Twitter. Retrieved 2014-09-04.

[11] Lerdorf, Rasmus (2007-04-26). PHP on Hormones


(mp3). The Conversations Network. Retrieved 2009-0622.
[12] Lerdorf, Rasmus (2007). Slide 3. slides for 'PHP on
Hormones talk. The PHP Group. Retrieved 2009-06-22.

10

See also

PEAR (PHP Extension and Application Repository)


PHP Extension Community Library (PECL)
PHP accelerator
List of PHP accelerators
List of AMP packages
List of PHP editors

[13] Lerdorf, Rasmus (June 8, 1995). Announce: Personal


Home Page Tools (PHP Tools)". Retrieved 7 June 2011.
[14] Lerdorf, Rasmus (1995-06-08).
Announce: Personal Home Page Tools (PHP Tools)". Newsgroup:
comp.infosystems.www.authoring.cgi. Retrieved 200609-17.
[15] Rasmus Lerdorf, Senior Technical Yahoo: PHP, Behind
the Mic. 2003-11-19. Archived from the original on
2013-07-28., cited at Felipe Ribeiro (Aug 7, 2012). This
Is Not Another PHP Sucks Article.

PHP-GTK

[16] Problems with PHP. Retrieved 20 December 2010.

Template processor

[17] php.internals: Re: Function name consistency.


news.php.net. 2013-12-28. Retrieved 2014-02-09.

XAMPP (Free and open source cross-platform web


[18] Rasmus Lerdorf (Dec 16, 2013). Re: Flexible function
server solution stack package)
Zend Server
Hack (programming language)
Comparison of programming languages
Comparison of web frameworks

naming. Newsgroup: php.internals. Retrieved December 26, 2013.

[19] PHP - Acronym Meaning Vote. PHP.net. Archived


from the original on August 15, 2000.
[20] Zend Engine version 2.0: Feature Overview and Design.
Zend Technologies Ltd. Retrieved 2006-09-17.

10

11

REFERENCES

[21] php.net 2007 news archive. The PHP Group. 2007-0713. Retrieved 2008-02-22.

[45] Merge branch 'ZendEngine3'". github.com. 2014-12-05.


Retrieved 2014-12-05.

[22] Kerner, Sean Michael (2008-02-01). PHP 4 is Dead


Long Live PHP 5. InternetNews. Retrieved 2008-03-16.

[46] PHP: Release Process. 2011-06-20. Retrieved 201310-06.

[23] Trachtenberg, Adam (2004-07-15).


Why PHP 5
Rocks!". O'Reilly. Retrieved 2008-02-22.

[47] PHP RFC: Exceptions in the engine (for PHP 7)".


php.net. Retrieved 2015-05-21.

[24] Late Static Binding in PHP. Digital Sandwich. 200602-23. Retrieved 2008-03-25.

[48] PHP RFC: Uniform Variable Syntax. php.net. 201405-31. Retrieved 2014-07-30.

[25] Static Keyword. The PHP Group. Retrieved 2008-0325.

[49] Online PHP shell | 150+ versions + stats + vld + hhvm.

[26] GoPHP5. Archived from the original on 2011-04-27.


[27] GoPHP5. PHP projects join forces to Go PHP 5.
GoPHP5 Press Release. Archived from the original (PDF)
on 2009-12-10. Retrieved 2008-02-23.
[28] GoPHP5. GoPHP5. Archived from the original on
2011-04-27. Retrieved 2008-02-22.
[29] PHP Installation and Conguration. php.net. Retrieved
2013-10-29.
[30] PHP for Windows: Binaries and sources releases (5.3)".
php.net. Retrieved 2013-10-29.
[31] PHP for Windows: Binaries and sources releases (5.4)".
php.net. Retrieved 2013-10-29.
[32] PHP for Windows: Binaries and sources releases (5.5)".
php.net. Retrieved 2013-10-29.
[33] Types: Strings (PHP Manual)". PHP.net. Retrieved
2013-09-22.
[34] Details of the String Type (PHP Manual)". PHP.net. Retrieved 2013-09-22.
[35] Andrei Zmievski (2005-08-10). PHP Unicode support
design document (mailing list post)". Retrieved 2014-0209.

[50] PHP RFC: Fix foreach behavior. php.net. Retrieved


2015-05-21.
[51] PHP RFC: Constructor behaviour of internal classes.
php.net. Retrieved 2015-05-21.
[52] PHP RFC: Removal of dead or not yet PHP7 ported
SAPIs and extensions. php.net. Retrieved 2015-05-21.
[53] PHP RFC: Fix list() behavior inconsistency. php.net.
Retrieved 2015-05-21.
[54] PHP RFC: Remove alternative PHP tags. php.net. Retrieved 2015-05-21.
[55] PHP RFC: Make dening multiple default cases in a
switch a syntax error. php.net. Retrieved 2015-05-21.
[56] PHP RFC: Remove hex support in numeric strings.
php.net. Retrieved 2015-05-21.
[57] PHP RFC: Integer Semantics. php.net. Retrieved 201505-21.
[58] PHP RFC: ZPP Failure on Overow. php.net. Retrieved 2015-05-21.
[59] RFC: Return Types. php.net. 2015-01-27. Retrieved
2015-01-28.
[60] RFC: Scalar Type Declarations. php.net. 2015-03-16.
Retrieved 2015-03-17.

[36] PHP 5.5 or 6.0. Retrieved 2014-02-09.


[37] Andrei Zmievski. The Good, the Bad, and the Ugly:
What Happened to Unicode and PHP 6. Retrieved 201402-09.
[38] Rasmus Lerdorf (2010-03-11).
post)". Retrieved 2014-02-07.

PHP 6 (mailing list

[39] https://philsturgeon.uk/php/2014/07/23/
neverending-muppet-debate-of-php-6-v-php-7/
[40] RFC: Name of Next Release of PHP. php.net. 201407-07. Retrieved 2014-07-15.
[41] Re: [PHP-DEV] [VOTE][RFC] Name of Next Release
of PHP (again)". 2014-07-30. Retrieved 2014-07-30.
[42] http://news.php.net/php.internals/73888
[43] PHP: rfc:phpng".
2014.

php.net.

Retrieved 16 December

[44] PHP: phpng. php.net. Retrieved 2014-07-15.

[61] Unsupported Branches. php.net. Retrieved 2015-1114.


[62] PHP: PHP 4 ChangeLog. The PHP Group. 2008-0103. Retrieved 2008-02-22.
[63] Using PHP from the command line. PHP Manual. The
PHP Group. Retrieved 2009-09-11.
[64] PHP 4.4.0 Release Announcement. PHP Mannual. The
PHP Group. Retrieved 2013-11-24.
[65] PHP: PHP 5 ChangeLog. The PHP Group. 2007-1108. Retrieved 2008-02-22.
[66] PHP manual: PDO. The PHP Group. 2011-11-15. Retrieved 2011-11-15.
[67] Built-in web server. Retrieved March 26, 2012.
[68] Supported Versions. php.net. Retrieved 2015-12-02.
[69] PHP 5.5.0 changes. php.net. Retrieved 2015-03-03.

11

[70] Migrating from PHP 5.5.x to PHP 5.6.x. php.net. Retrieved 2014-03-24.

[92] PHP: Basic syntax. The PHP Group. Retrieved 200802-22.

[71] Resetting PHP 6. There have been books on the shelves


purporting to cover PHP 6 since at least 2008. But, in
March 2010, the PHP 6 release is not out - in fact, it is not
even close to out. Recent events suggest that PHP 6 will
not be released before 2011 - if, indeed, it is released at
all.

[93] Basic Coding Standard. PHP Framework Interoperability Group. Retrieved 2016-01-03.

[72] PHP 7 moves full speed ahead. Recent versions of PHP


have been part of the 5.x release series, but there will be
no PHP 6. Were going to skip [version] 6 because years
ago, we had plans for a 6 but those plans were very different from what were doing now, Gutmans said. Going
right to version 7 avoids confusion.
[73] PHP: rfc:size_t_and_int64_next". php.net. Retrieved 16
December 2014.
[74] PHP: rfc:abstract_syntax_tree". php.net. Retrieved 16
December 2014.

[94] echo - Manual. php.net. Retrieved 2014-02-17.


[95] Description of core php.ini directives - Manual. php.net.
2002-03-17. Retrieved 2014-02-17.
[96] Your rst PHP-enabled page. The PHP Group. Retrieved 2008-02-25.
[97] Bray, Tim; et al. (26 November 2008). Processing
Instructions. Extensible Markup Language (XML) 1.0
(Fifth Edition). W3C. Retrieved 2009-06-18.
[98] Variables. The PHP Group. Retrieved 2008-03-16.
[99] Instruction separation. The PHP Group. Retrieved
2008-03-16.

[100] Comments. The PHP Group. Retrieved 2008-03-16.


[75] PHP: rfc:closure_apply". php.net. Retrieved 16 Decem[101] Integers in PHP, running with scissors, and portability.
ber 2014.
MySQL Performance Blog. March 27, 2007. Retrieved
[76] PHP: rfc:integer_semantics". php.net. Retrieved 16 De2007-03-28.
cember 2014.
[102] Types. The PHP Group. Retrieved 2008-03-16.
[77] PHP: rfc:isset_ternary". php.net. Retrieved 16 Decem[103] Strings. The PHP Group. Retrieved 2008-03-21.
ber 2014.
[78] RFC: Unicode Codepoint Escape Syntax. 2014-11-24. [104] SPL StandardPHPLibrary. PHP.net. March 16, 2009.
Retrieved 2009-03-16.
Retrieved 2014-12-19.
[79] Combined Comparison (Spaceship) Operator. php.net. [105] User-dened functions (PHP manual)". php.net. 201407-04. Retrieved 2014-07-07.
Retrieved 2015-05-21.
[80] PHP RFC: Generator Delegation. php.net. Retrieved [106] Variable functions (PHP manual)". php.net. 2014-0704. Retrieved 2014-07-07.
2015-05-21.
[81] PHP RFC: Anonymous Classes. php.net. Retrieved [107] create_function() (PHP manual)". php.net. 2014-07-04.
Retrieved 2014-07-07.
2015-05-21.
[82] PHP RFC: Easy User-land CSPRNG. php.net. Re- [108] Anonymous functions (PHP manual)". php.net. 201407-04. Retrieved 2014-07-07.
trieved 2015-05-21.
[83] PHP RFC: Group Use Declarations. php.net. Retrieved [109] Christian Seiler; Dmitry Stogov (2008-07-01). Request
for Comments: Lambda functions and closures. php.net.
2015-05-21.
Retrieved 2014-07-07.
[84] Preparation Tasks. Retrieved 5 July 2016.
[110] PHP 5 Object References. mjtsai.com. Retrieved 200803-16.
[85] PHP: rfc:void_return_type". php.net. 2015-11-09. Retrieved 2015-11-14.
[111] Classes and Objects (PHP 5)". The PHP Group. Retrieved 2008-03-16.
[86] PHP: rfc:class_constant_visibility". php.net. 2015-1027. Retrieved 2015-12-08.
[112] Object cloning. The PHP Group. Retrieved 2008-0316.
[87] PHP RFC: Nullable Types. php.net. 2014-04-10. Retrieved 2016-06-14.
[113] Visibility (PHP Manual)". theserverpages.com. 200505-19. Retrieved 2010-08-26.
[88] PHP: ElePHPant. 4 Oct 2014. Retrieved 4 Oct 2014.
[89] https://wwphp-fb.github.io/faq/community/elephpant/
[90] tags - Manual. php.net. Retrieved 2014-02-17.

[114] Gervasio, Alejandro. More on Private Methods with


PHP 5 Member Visibility. devshed.com. Retrieved 24
November 2010.

[91] PHP: rfc:shortags". php.net. 2008-04-03. Retrieved [115] Visibility in PHP: Public, Private and Protected.
2014-05-08.
aperiplus.sourceforge.net. Retrieved 2010-08-26.

12

11

REFERENCES

[116] How do computer languages work?". Retrieved 2009- [139] FastCGI Process Manager (FPM)". php.net. Retrieved
11-04.
2013-09-22.
[117] (Gilmore 2006, p. 43)

[140] Command line usage: Introduction. php.net. Retrieved


2013-09-22.

[118] "[VOTE] Integrating Zend Optimizer+ into the PHP distribution. news.php.net. Retrieved 2013-03-08.
[141] Command line usage: Dierences to other SAPIs.
php.net. Retrieved 2013-09-22.
[119] Alternative PHP Cache. PHP.net. Retrieved 2013-0921.
[142] General Installation Considerations. php.net. Retrieved
2013-09-22.
[120] We are the 98.5% (and the 16%) HipHop Virtual Machine. hhvm.com. December 2013. Retrieved 2014-02- [143] PHP: Apache 2.x on Microsoft Windows. php.net. Re23.
trieved 2013-09-22.

[121] Announcement on GitHub removing HPHPc support. [144] Command line usage: Introduction. php.net. Retrieved
Retrieved 2013-05-24.
2013-09-22.
[122] The PHP License, version 3.01. Retrieved 2010-05-20. [145] Installing PHP-GTK 2. php.net. Retrieved 2013-09-22.
[123] GPL-Incompatible, Free Software Licenses. Various [146] AWS SDK for PHP. aws.amazon.com. Retrieved
Licenses and Comments about Them. Free Software Foun2014-03-06.
dation. Retrieved 2011-01-03.
[147] Windows Azure SDK for PHP - Interoperability Bridges
[124] PHP: Function and Method listing - Manual. The PHP
and Labs Center. interoperabilitybridges.com. Retrieved
Group. Retrieved 2015-01-14.
2014-03-06.
[125] Introduction - Manual. php.net. 2013-06-07. Retrieved
[148] Runtime conguration: Table of contents. php.net. Re2013-06-13.
trieved 2013-09-22.
[126] Darryl Patterson (5 August 2004). Simplify Busi[149] php.ini directives: List of php.ini directives. php.net.
ness Logic with PHP DataObjects - O'Reilly Media.
Retrieved 2013-09-22.
ibm.com. Retrieved 16 December 2014.
[127] IBM - United States. IBM - United States. Retrieved 16 [150] Runtime conguration: The conguration le. PHP.net.
Retrieved 2013-09-22.
December 2014.
[128] Five common PHP database problems. ibm.com. 2006- [151] php.ini directives: List of php.ini sections. PHP.net.
Retrieved 2013-09-22.
08-01. Retrieved 2013-06-13.
[129] IBM Redbooks - Developing PHP Applications for IBM [152] Runtime conguration: Where a conguration setting
may be set. PHP.net. Retrieved 2013-09-22.
Data Servers. redbooks.ibm.com. Retrieved 16 December 2014.
[153] PHP Manual Image Processing and GD;". php.net. Retrieved 2011-04-09.
[130] php|architect
[131] Krill, Paul (19 October 2005). PHP catching on at enter- [154] Archived June 11, 2008, at the Wayback Machine.
prises, vying with Java. InfoWorld. Archived from the
[155] PHP and MySQL. University of Alabama. Archived
original on 13 July 2014.
from the original on 2008-02-28. Retrieved 2008-02-25.
[132] Cross Reference: /PHP_5_4/ext/standard/". php.net.
[156] PHP Server-Side Scripting Language. Indiana UniverRetrieved 16 December 2014.
sity. 2007-04-04. Retrieved 2008-02-25.
[133] Developing Custom PHP Extensions. devnewz.com.
2002-09-09. Archived from the original on 2008-02-18. [157] JavaServer Pages Technology JavaServer Pages Comparing Methods for Server-Side Dynamic Content White
Retrieved 2008-02-25.
Paper. Sun Microsystems. Retrieved 2008-02-25.
[134] Why Zephir?". zephir-lang.com. 2015-10-20. Retrieved
[158] Five simple ways to tune your LAMP application.
2015-12-14.
[135] PHP Credits. php.net. Retrieved 2015-07-29.
[136] http://www.zend.com/en/services/certification/
php-5-certification

[159] PHP: PHP Usage Stats. SecuritySpace. 2007-04-01.


Retrieved 2008-02-24.
[160] Usage of server-side programming languages for websites. W3Techs. 2010-10-29. Retrieved 2010-10-29.

[137] General Installation Considerations. php.net. Retrieved


[161] Usage of server-side programming languages for web2013-09-22.
sites. W3Techs. Retrieved 2014-03-19.
[138] News Archive: PHP 5.3.3 Released!". php.net. 201007-22.
[162] PHP and Perl crashing the enterprise party.

13

[163] "Manual:Installation requirements#PHP. MediaWiki. [187] PHP Taint Mode RFC.


2010-01-25. Retrieved 2010-02-26. PHP is the programming language in which MediaWiki is written [...]
[188] Developer Meeting Notes, Nov. 2005.
[164] What is Joomla?

[189] Taint mode decision, November 2007.


[165] Server requirements of SilverStripe. Retrieved 13 October 2014. SilverStripe requires PHP 5.3.2+
[190] Hardened-PHP Project. 2008-08-15.
[166] About WordPress. Retrieved 2010-02-26. WordPress
[191] Security: Using Register Globals.
was [...] built on PHP
PHP.net. Retrieved 2013-09-22.

PHP Manual.

[167] PHP and Drupal. Drupal.org. Retrieved 2010-06-13.


[168] About. Moodle.org. Retrieved 2009-12-20.

[192] Magic Quotes. PHP Manual. PHP.net. Retrieved


2014-01-17.

[169] PHP and Facebook | Facebook. Blog.facebook.com.


[193] "'engine' conguration directive. PHP: Runtime ConguRetrieved 2009-07-29.
ration. PHP.net. Retrieved 2014-02-13.
[170] PHP and Digg. O'Reilly. Retrieved 2010-06-13.
[194] PHP Security Exploit With GIF Images. 2007-06-22.
[171] PHP at the core: Extension structure. PHP.net. ReRetrieved 2013-09-22.
trieved 2013-09-22.
[172] PHP at the core: The counter Extension A Continu- [195] PHP security exploit with GIF images. PHP Classes
blog. 2007-06-20. Retrieved 2013-09-22.
ing Example. PHP.net. Retrieved 2013-09-22.
[173] Extension Writing Part I: Introduction to PHP and Zend. [196] Passing Malicious PHP Through getimagesize()". 2007Zend Technologies. 2005-03-01. Retrieved 2013-09-22.
06-04. Retrieved 2013-09-22.
[174] Extension Writing Part II: Parameters, Arrays, and
[197] "'enable_dl' conguration directive. PHP: Runtime ConZVALs. Zend Technologies. 2005-06-06. Retrieved
guration. PHP.net. Retrieved 2014-02-13.
2013-09-22.
[175] Extension Writing Part II: Parameters, Arrays, and [198] PHP function reference: dl()". PHP.net. Retrieved
ZVALs (continued)". Zend Technologies. 2005-06-06.
2013-09-22.
Retrieved 2013-09-22.
[199] My host won't x their Trojan. WebHosting Talk. Re[176] Extension Writing Part III: Resources. Zend Technolotrieved 2013-09-22.
gies. 2006-05-12. Retrieved 2013-09-22.
[177] Wrapping C++ Classes in a PHP Extension. Zend Tech- [200] Raz0r. Simple Machines Forum <= 2.0.3 Admin Password Reset.
nologies. 2009-04-22. Retrieved 2013-09-22.
[178] Extending PHP with C++?". Stack Overow. Retrieved [201] Nibble Security. TYPO3-SA-2010-020, TYPO3-SA2013-09-22.
2010-022 EXPLAINED.
[179] How can I use C++ code to interact with PHP?". Stack
[202] Ahack.ru.
"
Overow. Retrieved 2013-09-22.
".
[180] Golemon, Sara (2006). Extending and Embedding PHP.
ISBN 978-0-672-32704-9.
[203] Comparison operators. PHP.net.

[181] Bug Request #46919: Multi threading. PHP.net. Re[204] Pawel Krawczyk (2013). Most common attacks on web
trieved 2013-09-22.
applications. IPSec.pl. Retrieved 2015-04-15.
[182] pthreads: Introduction (PHP Manual)". PHP.net. Retrieved 2013-09-22.
[205] Pawel Krawczyk (2013). So what are the most critical
application aws? On new OWASP Top 10. IPSec.pl.
[183] PECL :: Package :: pthreads. pecl.php.net. Retrieved
Retrieved 2015-04-15.
2014-02-09.
[184] Ide, Andy (2013-01-31). PHP just grows & grows. Retrieved 2013-04-01.
[185] National Vulnerability Database (NVD) Search Vulnerabilities. Retrieved 2014-03-19.
[186] PHP-related vulnerabilities on the National Vulnerability
Database. 2012-07-05. Retrieved 2013-04-01.

12 Further reading
Paul Ford (June 11, 2015). What is Code?".
Bloomberg Businessweek. Whats the Absolute Minimum I Must Know About PHP?

14

13

13

External links

Ocial website
PHP at DMOZ
PHP Reference Manual
PHP source code repository on GitHub
PHP PHP and Symfony: Structure, Stability and
Flexibility

EXTERNAL LINKS

15

14
14.1

Text and image sources, contributors, and licenses


Text

PHP Source: https://en.wikipedia.org/wiki/PHP?oldid=733101267 Contributors: AxelBoldt, Brion VIBBER, Eloquence, Vicki Rosenzweig, Wesley, Bryan Derksen, Zundark, Tarquin, Koyaanis Qatsi, Jeronimo, Guppie, Css, Ed Poor, Scipius, Tommy~enwiki, Aldie,
Gianfranco, SimonP, Zoe, AdamRetchless, Hephaestos, Stevertigo, Mrwojo, Clintp, Frecklefoot, Edward, Bdesham, Nealmcb, Patrick,
Bbtommy, Michael Hardy, Chuggnutt, Norm, Crenner, Pnm, Tompagenet, Menchi, Ixfd64, Graue, Eurleif, TakuyaMurata, Dori, Iluvcapra, SebastianHelm, Minesweeper, Pcb21, Jasp, Tregoweth, Ronabop, Ahoerstemeier, Haakon, Mac, Nanshu, Notheruser, Den fjttrade
ankan~enwiki, LittleDan, Julesd, Pratyeka, FQuist~enwiki, Sugarsh, Poor Yorick, Nikai, IMSoP, Andres, Dod1, Rl, BAxelrod, Jonik,
Mxn, Conti, Nikola Smolenski, Dwo, Archer1974, The Tom, Dave Bell, Guaka, Dcoetzee, Nohat, RickK, Ed Cormany, Pladask, Gutza,
Cjmnyc, Doradus, Wik, Zoicon5, Furrykef, Itai, Val42, Ringomassa, Thue, Bevo, Traroth, Wonko, Joy, Fvw, Bloodshedder, GPHemsley, Jamesday, Finlay McWalter, Phil Boswell, Robbot, Pfortuny, MrJones, Chealer, Craig Stuntz, Astronautics~enwiki, ChrisO~enwiki,
Fredrik, Chris 73, R3m0t, RedWolf, Chocolateboy, ZimZalaBim, Altenmann, Chris Roy, Tim Ivorson, Mirv, P0lyglut, Merovingian,
Danhuby, Academic Challenger, Texture, Jondel, Davidds, Christopherwoods, Rrjanbiah, Hadal, UtherSRG, Delpino, Spellbinder, Khlo,
Miles, ElBenevolente, Lupo, Diberri, Robartin, FrankSier, Dina, Tea2min, DarkHorizon, Ramir, Beefy~enwiki, Decumanus, Alerante,
Giftlite, Gwalla, JamesMLane, Indy~enwiki, Philwiki, Smjg, DavidCary, Oberiko, var Arnfjr Bjarmason, Wjgilmore, Quadra23,
0x6D667061, Everyking, Curps, Nicholsr, Zeroasterisk, Filceolaire, Rick Block, Itpastorn, Duncharris, Ofus, Gilgamesh~enwiki, Guanaco,
Terrible Tim, Jorge Stol, Enkrates, Cloud200, Rchandra, Foobar, Khalid hassani, Apv, Darrien, Chipp~enwiki, Rparle, Pne, Uzume,
Dj Vu, Sasha Slutsker, Scoates, Stevietheman, Erich gasboy, Gadum, Utcursch, Pgan002, Karlward, R. end, Cbraga, Jpkoester1,
Aughtandzero, Sonjaaa, Nx7000~enwiki, Antandrus, Beland, Stefanmai, Dasch, The Inedible Bulk, Kusunose, Chuuumus, Zantolak,
Josquius, Oneiros, Drant, Mjs, Gauss, Bumm13, AndrewTheLott, Two Bananas, Karl-Henner, Ab5602, Iantresman, Henriquevicente,
Ctz, Willhsmit, Bluefoxicy, Jewbacca, SomeFajitaSomewhere, Sonett72, Hillel, ShortBus, Zondor, Trevor MacInnis, J0rd1, Canterbury
Tail, Jan304, EagleOne, BeavisSanchez, Corti, Stesch, Mike Rosoft, Ta bu shi da yu, Imroy, Dceck, RedWordSmith, Lifefeed, RossPatterson, Discospinster, Rich Farmbrough, Rhobite, Guanabot, Vague Rant, Bedel23, Sesse, JesterXXV, FT2, Andros 1337, Rama,
Vsmith, Wenz, Ericamick, Lulu of the Lotus-Eaters, Notinasnaid, Agorski, Mani1, Martpol, Gronky, SpookyMulder, Jed Smith, WebDome, Bender235, ESkog, ZeroOne, MattTM, Eadz, AdmN, Violetriga, Evice, Danakil, Enyo, Neatnate, Damotclese, CanisRufus, El C,
Zenohockey, Kimachi, Marx Gomes, Vanished user kjij32ro9j4tkse, Edward Z. Yang, Buxtor, PhilHibbs, Shanes, Diomidis Spinellis, RoyBoy, Nickj, Bookofjude, Etimbo, Perfecto, Arancaytar, Tgeller, Nigelj, Longhair, Myplacedk, Aetherfukz, TommyG, Smalljim, Lkmorlan,
Bloggocracy, David mintz, Unquietwiki, Defsac, Courtarro, SpeedyGonsales, Irrawaddy, Danolsen, Nk, Jeodesic, Unknown W. Brackets,
Microtony, Rje, Barro~enwiki, PWilkinson, Minghong, MPerel, Benbread, JesseHogan, E is for Ian, Conny, Espoo, Jadmadi, Schissel,
Zachlipton, Php5, Gary, JYolkowski, QVanillaQ, PopUpPirate, Guy Harris, Qrc, Somebody in the WWW, Atlant, Jezmck, AndyHassall,
Andrewpmk, Sl, Riana, Yamla, Equinoxe, Goldom, Water Bottle, Ossiemanners, Lightdarkness, Ynhockey, InShaneee, Mysdaao, Hu,
Ozzyslovechild, Klaser, Wgw2024, Ronark, TheRealFennShysa, Wtshymanski, EvenT, Cburnett, 2mcm, Gpvos, RainbowOfLight, Zawersh, Versageek, Zootm, Alai, IllEATurHARTout, Thore, HenryLi, Dan100, Ceyockey, Markaci, Forderud, Thegnark, Stephen Deken,
NicM, Adrian.benko, CONFIQ, Dejvid, Feezo, MilesMi, Roland2~enwiki, Weyes, Philthecow, Boothy443, Woohookitty, Mindmatrix,
RHaworth, Ohyoko, Toveling, Digx, Mlemos, Wackyvorlon, Uncle G, MattGiuca, Scjessey, Robert K S, Pol098, ^demon, Rohanroshan,
Ruud Koot, MONGO, Ianweller, Uris, Awk~enwiki, Bbatsell, GregorB, Dionyziz, SPACEBAR, Exonie, Toussaint, Karam.Anthony.K,
Turnstep, Gerbrant, Rlw, Mandarax, Avnit, Kesla, Mrbartjens, RichardWeiss, Yoghurt, Graham87, Somebenguy, Magister Mathematicae,
Chun-hian, David Levy, Xxpor, FreplySpang, KramarDanIkabu, Yurik, OMouse, Reisio, Dpv, Dananderson, Phoenix-forgotten, Canderson7, Ketiltrout, Jorunn, Rjwilmsi, Sander Marechal, JVz, Koavf, Yacoubean, Avochelm, Wikibofh, Philipolson, Pako, T0ny, Quiddity,
Darguz Parsilvan, Mentality, Gudeldar, Boatman, Guinness2702, Tstockma, Oliverkeenan, Jspetrak, Fred Bradstadt, Husky, Judas~enwiki,
Antimatt, Pmc, Directorblue, RobertG, Brusselsshrek, Who, B44H, RexNL, Gurch, Csmaster2005, BjKa, Osmond~enwiki, Intgr, Trendyhendy, Chorny, Alvin-cs, Kri, Ahunt, Stephantom, Chobot, Nylex, Antilived, Visor, Bornhj, Typer85, DVdm, Garas, Bobdc, I Use Dial,
Burnte, NSR, WriterHound, FrankTobia, ShadowOfEclipse, Wasted Time R, Lil devil, YurikBot, Cyberscribe, BigBlueFish, Cjdyer, Freerick, Bdude, Antoin, Flobi, Adam1213, JarrahTree, RussBot, Hyad, Fabartus, Conscious, Pi Delport, Philip Hazelden, Kstarsinic, IByte,
Hydrargyrum, Mgdm, Powerlord, Friedsh, Shell Kinney, Kyorosuke, Rsrikanth05, Txuspe, Akhristov, Pradeepsomani, Big Brother 1984,
Marcus Cyron, Muntuwandi, Daniel15, Wiki alf, -OOPSIE-, Athox, Bachrach44, Razorx, Tkbwik, Jaxl, Nbettencourt, Boinger, Terli, Howcheng, Hanumizzle, Robchurch, Irishguy, Brandon, Banes, SolsticeDax, Mikeblas, Mohdelhi, Adhall, Dan scott, Tony1, Syrthiss,
Aaron Schulz, Deekay, Mysid, Rwalker, DeadEyeArrow, Bota47, Jeremy Visser, Sebleblanc, Mjsabby, Black Falcon, StevenLewis, Ms2ger,
Matthewdingley, Johndrinkwater, Ario, MutantMonkey, Abotz, Intell 03, Kenguest, Paul Magnussen, Rob.daemon, Zzuuzz, Yywin, Closedmouth, Arthur Rubin, Cedar101, KGasso, Donho~enwiki, Axon Ca, SMcCandlish, Dspradau, Juliano, GraemeL, Alias Flood, Blueapples,
Antonym~enwiki, Donhalcon, HereToHelp, Hyst, JLaTondre, Fsiler, Caballero1967, Nsevs, Kungfuadam, Amitverma, John Broughton,
Kingboyk, JustinD, Dan Atkinson, Draicone, Masonbarge, Samwilson, Jdcompguy, Ckempo, Veinor, User24, SmackBot, TheBilly, ZorkFox, Mark Tranchant, Espresso Addict, Monkeyblue, Cubs Fan, Faisal.akeel, Moeron, Reedy, Hydrogen Iodide, Rehanyarkhan, McGeddon, Pavlovi, David.Mestel, C.Fred, BurntSky, Brick Thrower, Renesis, Delldot, MindlessXD, Sydius, RobinMcM, Brossow, Herbm,
Deminy, SigurdMagnusson, Cazort, Jwestbrook, Primaryspace, Yamaguchi , PeterSymonds, Gilliam, Brianski, Toddintr, Ohnoitsjamie,
David.coallier, Oscarthecat, Dlotts, SeanWDP, Isaac Dupree, Muuletta, NickGarvey, ERcheck, Isnoop, Standardissue, Autarch, LinguistAtLarge, BarkerJr, Persian Poet Gal, DStoykov, JohnCarm, NCurse, Emufarmers, Dolive21, Thumperward, Snori, Oli Filth, Lollerskates, PrimeHunter, Cmelbye, MalafayaBot, PaulGregory, Timneu22, Jammycakes, Jerome Charles Potts, Gutworth, Wykis, Nbarth,
Cornake pirate, Mcaruso, DHN-bot~enwiki, Torzsmokus, Da404lewzer, FiftyNine, Anabus, Andyiou52, Huji, Can't sleep, clown will
eat me, Frap, Meizawotmeiz, Coldkill, Uranther, Rezaiqbal, GeorgeMoney, Stevenjgarner, CorbinSimpson, Whpq, Mr.Z-man, -Barry-,
Pianohacker, UU, LPCA, Digitize, Sspecter, BostonMA, Dirk gently~enwiki, Cybercobra, Nakon, Jackohare, MisterCharlie, JhAgA, Supernerd~enwiki, Ochbad, Peaceduck, Derek R Bullamore, TJFrazier, RiseRobotRise, Imajes, Laurent Abbal, Matt.forestpath, Fdiv bug,
Wizardman, Kalathalan, Acdx, Daniel.Cardenas, Alan G. Archer, Trane Francks, Bige1977, Rory096, Doug Bell, RTejedor, Markdr,
BurnDownBabylon, Gobonobo, Evildictaitor, RCX, DN Lodge, Esycat, Breno, JoshuaZ, JorisvS, Dotxp, IronGargoyle, Spiel, Necenzurat, EricJ~enwiki, The Man in Question, 16@r, Ambbes5, Hurmoth, Smith609, Stupid Corn, Slakr, Stwalkerster, Tasc, Beetstra, Limajean34983, StanBrinkerho, Vanished user ih3rjk324jdei2, Ehheh, RyJones, Larrymcp, Talkingpie, Mets501, Sharcho, Ryulong, Manifestation, Pyrocrickett, King Kovifor, Ian Vaughan, Johnny 0, Super3boy~enwiki, Hu12, Pjrm, BranStark, ElliottHird, TerryE, Lathspell, Dreftymac, Skalman, Joseph Solis in Australia, JoeBot, Robust Physique, Sander Sde, Kludger, UncleDouggie, Shwaza, Soapthgr8,
Happy-melon, Aeons, Az1568, Linkspamremover, Htmlland, Renka, Tawkerbot2, TH-Foreigner, Timrem, Chris55, Altonbr, Tessehamid,
Theboywhogotlost, FatalError, SkyWalker, 8754865, Jeremy Banks, Unreal128, Lazybeam, CRGreathouse, Sgoguen, Raysonho, Toadams, Pyrowolf, Chaoszen, Scohoust, Ocerveets, LewisW, Nczempin, Ryan Brodkin, Syphondu, Vasya~enwiki, OreXero, IntrigueBlue,

16

14

TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

Green caterpillar, Speedboxer, Wez.p., Shandris, Lyoko is Cool, WeggeBot, Evilgohan2, Tychay, Nnp, Borislav Dopudja, Chris83, Nilfanion, Lylylylylylylylyl, Tedivm, Dany4762, Creek23, Sopoforic, Matt Schwartz, Cydebot, Mblumber, Krauss, MC10, Gogo Dodo, Laboramus, Mariano.iglesias, Retired user 0002, ShadowGuy, SymlynX, Tawkerbot4, Herorev, Zian, Chrislk02, Hcgtv, Kozuch, Gokusandwich, Scarpy, Omicronpersei8, Omart, Vanished User jdksfajlasd, Brion.nlay, Gabrielwb, Crum375, Dimo414, Rocket000, Malleus
Fatuorum, Emyr42, Epbr123, Pkatanov, Legolas558, JimmE, Qwyrxian, Bytebear, Renaissongsman, Jaxsonjo, Loudsox, Sid 3050, Tomturton, Andyjsmith, Edd9139, Mojo Hand, James086, Doyley, Davidhorman, Dgies, Michael A. White, Urdutext, Escarbot, DJ Creature, I already forgot, Jrfjrf, Mentisto, Hmrox, SoftwareDeveloper, AntiVandalBot, Gioto, PHPedia, Saimhe, Luna Santin, Widefox,
Guy Macon, Tut21, DarkAudit, Avk15gt, Bobbfwed, Spuug, Verminox, Jj137, Rballou, Soren121, Dylan Lake, Gdo01, DennisWithem,
Leafman, Decl, Gmarsden, DOSGuy, JAnDbot, Thomasmallen, Dereckson, Ansarka, MER-C, Wootery, Speedygonzales77, Lucy1981,
Dcooper, KurtJ, Roleplayer, Martinkunev, PAT or JK, Wllm, R27182818, ChrisLoosley, Alastair Haines, Acroterion, Coee2theorems,
Penubag, Magioladitis, Sergeant K, VoABot II, TerrorKalle, Wimg, Bradcis, Janadore, Tedickey, Nyttend, Jatkins, Twsx, Rugops, Cic,
Jvhertum, PEAR, Coderx~enwiki, ErKURITA, Lasse Havelund, Bernd vdB~enwiki, AlReece45, Jobanjohn, Gioware, Hamiltonstone,
Denpick, Toddcs, LorenzoB, Sappy, Pkrecker, Businessman332211, Lewisthemusician, DerHexer, JaGa, Wdake, Esanchez7587, Patstuart, Fluteute, Bitbit, Gwern, Bradml, S3000, Cthackers, Jasonlesliewright, Flowanda, PhantomS, MartinBot, Moggie2002, HotXRock,
Spdaniel91, Jjdejong, Davidjcmorris, Twigletmac, Zeus, Mike6271, Pritesh Gupta, Tulkolahten, Whale plane, Elsom25, Bansal, JonathonReinhart, Cjxxi, BGOATDoughnut, J.delanoy, Trusilver, Mhavila, Numbo3, Darkeldress, Yannick56, LeinadSpoon, Petrwiki, Milo03,
Indeyets, Get4post, Zae, TomCat4680, Liangent, St.daniel, Nemo bis, Austin512, Imkow.cn, Leancode, Plasticup, Bheesham, Frederik
S, Agrado, Mfb52, Parasane, Aharonyodaiken, DadaNeem, Gregtzy, 83d40m, EyeRmonkey, Atropos235, Joshua Issac, Juliancolton,
Cometstyles, Endotw3, Tiggerjay, Regetch, Imtikon, Gopiraajvs, Leucille, Kvdveer, Laura SIMMONS, Wilsonge, Ajfweb, David SIMMONS (HF), Bonadea, Ja 62, Zimbabwer, Varnent, Halukakin, Mhkrebs, Halmstad, The enemies of god, CardinalDan, BBilge, Valugi,
Nigeljbee, JameiLei, Russoedu, Lights, King Lopez, VolkovBot, DrDentz, Part Deux, Kalinga, Mrh30, Je G., JohnBlackburne, JustinHagstrom, Aaron44126, LuckyInWaco, Philip Trueman, TXiKiBoT, Oshwah, Muro de Aguas, Comrade Graham, TreyTateM, Rei-bot,
Rowlter, Retrozelda, Tdway, MjrPraveen, Anna Lincoln, Ocolon, Rich Janis, Dendodge, Dolphinn, Leafyplant, Sanfranman59, Jackfork, LeaveSleaves, Researchist, Notbyworks, Elyada, Bleveret, David Condrey, Man4mac, Milan Kerlger, Battlestar27, Zoef1234,
Alitokmen~enwiki, Epiphanius~enwiki, Curb Safe Charmer, Flavgj, Andy Dingley, Michaeldsuarez, Dirkbb, JohanJ93, SQL, Haikon,
Merlin-kb, Falcon8765, Superbliss, Turgan, Eugene Vasilchenko, Agentq314, Jakub Vrna, Top Sock Puppet, Chenzw, AlleborgoBot,
Nagy, Pocketissue, Hazel666, DrewSears, IndulgentReader, EmxBot, Zotag, Rob1n, Rooivos, Kbrose, OsamaK, Avinesh, SieBot, TJRC,
Kristianlm, Hertz1888, Wildhoney25, YourEyesOnly, Caltas, Eagleal, RJaguar3, X-Fi6, Yintan, Dmwtechnologies, Jerryobject, Purbo T,
Samisa.abeysinghe, GamingG, Projectoxide, Patriotick, Sunny910910, Kexpert, Bentogoa, Elivated.me, Flyer22 Reborn, Exert, Henke37,
Nachother, JetLover, Bananastalktome, Brian R Hunter, Laspace, Noble Story, Oxymoron83, JerzyTarasiuk,
, Cpey, Diego GrezCaete, Svick, AlanUS, Jonlandrum, Neilshermer, Zaxx81, Trustable, Soulweaver, BfMGH, Habbo sg, WikiLaurent, Noitanod, Pinkadelica, GregFD3S, Lianmei, Lloydpick, Cvinoth, Naturespace, ImageRemovalBot, Jcoconnor, Jacob Myers, XDanielx, Sokari, Adjective
Noun, Martarius, 50kalkiller, ClueBot, Bwfrank, Strongsauce, Kl4m, Avenged Eightfold, Vladkornea, DFRussia, PipepBot, The Thing
That Should Not Be, Psdie, Emwave, Mx3, Mailtosasidaran, Garyzx, Meekywiki, Kl4m-AWB, Tylaw, Drmies, Mild Bill Hiccup, Saltrange,
ChandlerMapBot, Pyrecheios, Rockfang, Karthick rjkmr, Excirial, Alexbot, Toddinpal, Xantorohara, Jallred6, Eeekster, Sullivan Software
Systems, Pblag, Lartoven, Sun Creator, Arjayay, Jotterbot, WalterGR, SuzieDerkins, Iroken22, ChrisHodgesUK, RuneScapez, Aleksd,
Sajmure, AntiVanMan, Versus22, Johnuniq, Apparition11, SF007, Juves, Exidor, DumZiBoT, Antti29, Darkicebot, RPBCOMPUTECH,
Snthdiueoa, RyanAHickman, XLinkBot, Spitre, Doru001, PseudoOne, Jstastny, Rror, Strangepics, TFOWR, WikHead, The Aviv, PL290,
Mm40, Jaymacdonald, Tchalvakspam, Menthaxpiperita, Jabberwoch, Hiddenpearls, Good Olfactory, Dsimic, SlubGlub, Elvinsh, Addbot, Mortense, Ghettoblaster, Willking1979, Clsdennis2007, Daedricnekomata, Krbrz, TheGeekHead, Pvanrompay, Mashi12, Sirlemons,
Rcalvert, PrathapMeister, VShaka, Turnerj, Tothwolf, Iscripts, Fieldday-sunday, Untitledmind72, Krevan, CanadianLinuxUser, Diptanshu.D, Hjpotter92, Pierre.bonnefoy, Cst17, MrOllie, Glane23, Vameza, Jasper Deng, Neoaries, Guydrawers, PlatanusOccidentalis, Justpassin, Phosphorescence, Numbo3-bot, Ninavi, Tide rolls, , Bonatto, Gail, Zorrobot, Jarble, GastonRabbit, Obst2580, Blablablob, Matt.T,
Qughter, Edmundlaujiahao, Legobot, Luckas-bot, Map nil, Yobot, Boulevardier, Rmogeraya, THEN WHO WAS PHONE?, Bugnot,
KamikazeBot, ByM4k5, Eric-Wester, Vanished user sok43rkimtiksk3j56s, AnomieBOT, Tryptosh, RedLeaf81, VX, IRP, Wickorama,
Xophorus, Kingpin13, ChristopheS, Swatwork, Mann jess, NauarchLysander, Janitarv, Materialscientist, Slsh, Are you ready for IPv6?,
RobertEves92, Citation bot, Dnepro.., Emilhem, ArthurBot, MattDunbar, Xtremejames183, Abcorn, Gawdl3y, Xqbot, 2006ict045, Fireworking, Shylika, The Banner, Lehieu008, Onehundredandtwo, Sich1234, Jerey Mall, Donpayette, Kanishka 3000, Gozika55l, Kvakaman, Naseemkm, J JMesserly, Someslowly, NOrbeck, 16x9, Verycuriousboy, TheIntersect, Aparna mithun, StealthCopyEditor, RibotBOT,
Zzzplayer, Magicsc, Cyberhitesh, Alainr345, Ashwanikr1981, Mangst, Mpritza, Clabinger, Shadowjams, Hamamelis, Salmonbot, SD5,
Rcrandallant, Krinkle, FrescoBot, Rgishri, Dwellings, Martin Hujer, Joe.dolivo, Rawringtiger, Anton Sergeev, Recognizance, Djun Kim,
Kunoorthaker, SoftwareSimian, Davide89v, Vindicator26, Gabrielepx, Coalgames, DunkleAura, Buzgun, BenzolBot, Nbrenard, M2545,
Kwiki, Bidsea, Chris98029, CogentAgent, BurtonReingold, MisterLambda, Launchballer, Zoonosis, Pshent, Nirmos, Licuende, Winterst,
Serotonality, Liorkaplan, Kazakka, Pinethicket, N!ghty, Jonesey95, Divinity76, Ngyikp, Hoo man, Karthimuchlove, Garazy, RedBot,
Soc88, MondalorBot, Wikitanvir, , Nullw0rm, Quilokos, Majkl578~enwiki, Arash j13, Prapsnot, Johnnybpogi, Tsepel Cory, December21st2012Freak, Jeroen De Dauw, Weylinp, Txt.le, Helpersatan~enwiki, TobeBot, Cosmin.sandu, Aswanii, Fama Clamosa, Lotje, Fox
Wilson, Vrenator, Ayeshrajans, Zvn, January, Bunchosia, TheTechFan, Diannaa, Tbhotch, Reach Out to the Truth, Bobby122, Minimac,
Angel74dm, Mean as custard, GreatEmerald, Synook, TjBot, DexDor, Luhshawnda, Onfopt, Lopifalko, Noommos, NerdyScienceDude,
Bdanchilla, Ed Love, Mauriciofauth, Slon02, Prosopon, Congregatio, EmausBot, Davejohnsan, Rems4, Weathereye, Ianurag, Text Rx,
GoingBatty, RA0808, Sheeleyb, Bettymnz4, F1tutorials, Pagelm, Solarra, Falstart, Roheim, Chicago2020, Tudorol, Peteravalos, Sebastianz1983, Livefmsonline, Strange Passerby, ZroBot, D'oh!, QuentinUK, John Cline, F, Generalvorpil, Bollyje, Cfust, Gurmeetdotinfo, The4ngry, Tigree, Duperman01, Duncan3dc, Bruno Simes, The Nut, Gangatharakumar, Mitrandier, Hiftikhara, A930913, H3llBot,
Bhargavimoorthy, Caiot, Demonkoryu, Bred85, Wayne Slam, Wxop, Ocaasi, Cf. Hay, Gregoroq, Abelmebratu, K2cusat07, Mikerq, Patelronak 28, Mturner296, Donner60, MCoding, Jye182, MainFrame, Colejohnson66, Mister Mormon, Endrerud, Frysch, Vaclav.Makes,
E. Fokker, Faramir1138, ClueBot NG, Smtchahal, Blinkms, Jack Greenmaven, Rahulsri9, Razican, Je Song, Anttir717, Subu690,
Millermk, Sothun, Riinamdar, Uncomplicated007, DSchramm-NJITWILL, Savinder17, Widr, Danim, Jigneshkprajapati, Appy173, Helpful Pixie Bot, Bwoebi, Jatin.gera08, Autoride, MauchoEagle, Titodutta, Alexbee2, Vishal K M, Doorknob747, BG19bot, KamranMackey,
Alexbonline1, PatPatrson, Northamerica1000, MusikAnimal, Zerbu, Goldenshimmer, Thewebdevv, Silent.hackers, Compfreak7, SeeConspira, Jazeemlk, Altar, Soerfm, Dermodwood, Nighty85, Chmarkine, Writ Keeper, Drupalnator, Solved009, Nakornban, Klilidiplomus,
Fuse809, Rahidhidayat, Ronnielbrown, BattyBot, Tonyhayes, Tianjiao, Preston stone, David.moreno72, George.Baldwin, Ikariamplayer,
Cyberbot II, ChrisGualtieri, Nusaybah, Sunnyok, Jacobjohnward, EditorE, Harsh 2580, Dexbot, Rezonansowy, Codename Lisa, Jaysponsored, Chronoglider, Lugia2453, Isarra (HG), Frosty, Zcahmed, Beltranrubo, X64Architecture, Islam 3amr, Helio cola, Palmbeachguy,
Passengerpigeon, BurritoBazooka, Hnduy, Faizan, Magik.das, Peet Likes Ska, EnSkillet, Tsm32, Kartagis, Shahnewazshamim, Aowie1,

14.2

Images

17

Tentinator, Greiner12, Abhishek7737140453, Fixlinkx, KeltGourig, Pingpong123q, Jhonmary, DavidLeighEllis, Jemee012, Panique,
Babitaarora, Comp.arch, Bitobor, Gisleburt, Ugog Nizdast, Spyglasses, Melody Lavender, Benwerd, Sam Sailor, Rahuval, Dvorapa, Nelluq, NordLeuchte, Sunnysood, Amsfaithsoftware, ScotXW, Chickenofgodsrectum, Udbhavah, MarcoDgz, Danial.md5, AdamPro, Rajive14, Vicky191286, Monkbot, Dshak, Conuence9, BethNaught, Rahulbmg, AKiwiDeerPin, Asirabm, Kieran Waters2000, OMPIRE,
Tobutz98, , LibertyChick1776, Erinaedu, GaryLM, Fuerni, Kabaryder, Donosauro, 2014Best, 91weblessons, Cfjem, Mildlyridiculous, Thetechgirl, TranquilHope, KH-1, Webysther, Atechnocrat01, Pfcadammiller, Iwilsonp, Calexander23, Kb333,
Ommy panchal, Damadhackerzzz, Himanshukhiyani81189, KasparBot, Mdhaseenkhan733, Emily0077, BD2412bot, Martenjacobs, Sabir
Bhatiya, Archerman87, AttackOfTheSnailDemons, ThhbMoon, Lemondoge, Diyahina, UNCTillDeath, Laksh Talreja123, Pushprathi, Rajesh888, ROLEX Front Running on Long Island, Fatih Ahskal, Rgeraads, FlyingSuperChicken, Shakila Madushan, Snehalj1, IndigoTiger,
Ttt74, Dhinabala, Masonthecoolguy, Ron23545, Scottjessica, Aatir.f, Jeganmmk89, Bbio1092 and Anonymous: 2373

14.2

Images

File:8bit-dynamiclist_(reversed).gif Source: https://upload.wikimedia.org/wikipedia/commons/c/cc/8bit-dynamiclist_%28reversed%


29.gif License: CC-BY-SA-3.0 Contributors: This le was derived from: 8bit-dynamiclist.gif
Original artist: Seahen, User:Rezonansowy
File:Andi_Gutmans_1.jpg Source: https://upload.wikimedia.org/wikipedia/commons/f/f6/Andi_Gutmans_1.jpg License: CC BY 2.0
Contributors: andi gutmans handles questions Original artist: jim Winstead from los angeles, usa
File:Commons-logo.svg Source: https://upload.wikimedia.org/wikipedia/en/4/4a/Commons-logo.svg License: CC-BY-SA-3.0 Contributors: ? Original artist: ?
File:Custom-software-developement-php-net.JPG
Custom-software-developement-php-net.JPG License:
Original artist: Ron23545

Source:
https://upload.wikimedia.org/wikipedia/commons/c/c8/
CC BY-SA 4.0 Contributors: Dragonpoint Custom Software Developers

File:En-PHP.ogg Source: https://upload.wikimedia.org/wikipedia/commons/f/fb/En-PHP.ogg License: CC BY-SA 3.0 Contributors:


Derivative of PHP Original artist: Speaker: Mangst
Authors of the article
File:Folder_Hexagonal_Icon.svg Source: https://upload.wikimedia.org/wikipedia/en/4/48/Folder_Hexagonal_Icon.svg License: Cc-bysa-3.0 Contributors: ? Original artist: ?
File:Free_and_open-source_software_logo_(2009).svg Source: https://upload.wikimedia.org/wikipedia/commons/3/31/Free_and_
open-source_software_logo_%282009%29.svg License: Public domain Contributors: FOSS Logo.svg Original artist: Free Software Portal
Logo.svg (FOSS Logo.svg): ViperSnake151
File:LAMP_software_bundle.svg Source:
https://upload.wikimedia.org/wikipedia/commons/8/82/LAMP_software_bundle.svg
License: CC BY-SA 3.0 Contributors: This vector image includes elements that have been taken or adapted from
this:
<a href='//commons.wikimedia.org/wiki/File:Tux-shaded.svg' class='image'><img alt='Tux-shaded.svg' src='https:
//upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Tux-shaded.svg/17px-Tux-shaded.svg.png'
width='17'
height='20'
srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Tux-shaded.svg/25px-Tux-shaded.svg.png
1.5x,
https:
//upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Tux-shaded.svg/33px-Tux-shaded.svg.png 2x' data-le-width='249' datale-height='297' /></a> Tux-shaded.svg. Original artist: ScotXW
File:MediaWiki-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/b/bb/MediaWiki-notext.svg License: Public domain Contributors: Own work based on: Tournesol.png Original artist: User:Anthere (ower) and User:Eloquence (combination, concept),
reworked by User:Aka, vectorized by User:Chrkl ; brackets xed by guillom
File:PHP-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg License: CC BY-SA 4.0 Contributors:
http://php.net/logos Original artist: Colin Viebrock
File:Portal-puzzle.svg Source: https://upload.wikimedia.org/wikipedia/en/f/fd/Portal-puzzle.svg License: Public domain Contributors: ?
Original artist: ?
File:Rasmus_Lerdorf_cropped.jpg Source: https://upload.wikimedia.org/wikipedia/commons/9/9c/Rasmus_Lerdorf_cropped.jpg License: CC BY-SA 2.0 Contributors:
Rasmus_Lerdorf_2003.jpg Original artist: Rasmus_Lerdorf_2003.jpg: Sebastian Bergmann (Sebastian Bergmann @ Flickr)
File:Scheme_dynamic_page_en.svg Source: https://upload.wikimedia.org/wikipedia/commons/4/4f/Scheme_dynamic_page_en.svg License: CC BY-SA 3.0 Contributors: Own work Original artist:
Ggia
File:Sound-icon.svg Source: https://upload.wikimedia.org/wikipedia/commons/4/47/Sound-icon.svg License:
Derivative work from Silsor's versio Original artist: Crystal SVG icon set

LGPL Contributors:

File:Symbol_book_class2.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/89/Symbol_book_class2.svg License: CC


BY-SA 2.5 Contributors: Mad by Lokal_Prol by combining: Original artist: Lokal_Prol
File:Symbol_list_class.svg Source: https://upload.wikimedia.org/wikipedia/en/d/db/Symbol_list_class.svg License: Public domain Contributors: ? Original artist: ?
File:Symbol_neutral_vote.svg Source: https://upload.wikimedia.org/wikipedia/en/8/89/Symbol_neutral_vote.svg License: Public domain Contributors: ? Original artist: ?
File:Webysther_20160423_-_Elephpant.svg Source: https://upload.wikimedia.org/wikipedia/commons/3/31/Webysther_20160423_
-_Elephpant.svg License: GPL Contributors: http://www.elroubio.net/elephpant_download.php http://php.net/elephpant.php Original
artist: Vincent Pontier
File:Wikibooks-logo-en-noslogan.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/df/Wikibooks-logo-en-noslogan.
svg License: CC BY-SA 3.0 Contributors: Own work Original artist: User:Bastique, User:Ramac et al.

18

14

TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

File:Wikibooks-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/f/fa/Wikibooks-logo.svg License: CC BY-SA 3.0


Contributors: Own work Original artist: User:Bastique, User:Ramac et al.
File:Wikiversity-logo-Snorky.svg Source: https://upload.wikimedia.org/wikipedia/commons/1/1b/Wikiversity-logo-en.svg License:
CC BY-SA 3.0 Contributors: Own work Original artist: Snorky
File:Zeev_Suraski_2005_cropped.jpg Source: https://upload.wikimedia.org/wikipedia/commons/c/cf/Zeev_Suraski_2005_cropped.
jpg License: CC BY-SA 2.0 Contributors:
Zeev_Suraski_2005.jpg Original artist: Zeev_Suraski_2005.jpg: Christophe Gesch (Moosh Be @ Flickr)

14.3

Content license

Creative Commons Attribution-Share Alike 3.0

You might also like