PHP config: Difference between revisions
Appearance
Content deleted Content added
No edit summary |
m Reverted changes by 2600:1700:3BD2:8C00:BD31:D3BA:C793:798F (talk) to last version by Tegel Tag: Rollback |
||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{MovedToMediaWiki|PHP configuration}} |
|||
{{nota disambigua|altre voci che possono riferirsi alla stessa combinazione di 3 caratteri|[[PHP (disambigua)|PHP]]}} |
|||
{{Linguaggio di programmazione |
|||
|nome = PHP |
|||
|immagine = PHP-logo.svg |
|||
|didascalia = |
|||
|autore = The PHP Group |
|||
|data = [[1995]]<ref>{{cita web|url=http://itc.conversationsnetwork.org/shows/detail3298.html#|titolo=PHP on Hormones|editore=Itc.conversationsnetwork.org|data=26 aprile 2007|accesso=11 gennaio 2013}}</ref> |
|||
|versione = 5.4.13<br>([[14 marzo]] [[2013]]) |
|||
|utilizzo = Applicazioni web lato server |
|||
|paradigmi = <!-- Programmazione procedurale, a oggetti, generica, ecc. --> |
|||
|tipizzazione = <!-- Forte, debole... --> |
|||
|specifiche = |
|||
|estensione = <!-- Estensioni comuni dei file sorgenti --> |
|||
|influenzato_da = <!-- Lista di linguaggi che hanno influenzato il linguaggio in esame, citare le fonti --> |
|||
|ha_influenzato = <!-- Lista di linguaggi influenzati dal linguaggio in esame, citare le fonti --> |
|||
|implementazione_riferimento = interprete |
|||
|sistema_operativo = <!-- S.O. supportati dall'impl. di riferimento --> |
|||
|lingua = <!-- Lingue supportate dall'impl. di riferimento --> |
|||
|licenza = [[Licenza PHP|PHP License]] 3.01 |
|||
|sito_web = [http://www.php.net www.php.net] |
|||
}} |
|||
'''PHP''' ([[acronimo ricorsivo]] di "PHP: Hypertext Preprocessor", [[preprocessore]] di [[ipertesti]]; originariamente acronimo di "Personal Home Page"<ref>{{cita web |url=http://it.php.net/history |titolo=History of PHP and related projects |autore=The PHP Group |accesso=26 aprile 2011}}</ref>) è un [[Linguaggio di programmazione#Linguaggi di scripting|linguaggio di programmazione]] [[interprete (informatica)|interpretato]], originariamente concepito per la [[programmazione Web]] ovvero la realizzazione di [[pagine web dinamiche]]. L'interprete ha una licenza [[open source]] e libera (ma incompatibile con la [[GNU General Public License|GPL]]). |
|||
Attualmente è utilizzato principalmente per sviluppare [[Applicazione web|applicazioni web]] [[lato server]] ma può essere usato anche per scrivere [[script]] a [[Interfaccia a riga di comando|riga di comando]] o applicazioni [[stand-alone (informatica)|stand-alone]] con [[interfaccia grafica]]. |
|||
Un esempio di software scritto in PHP è [[MediaWiki]], su cui si basano progetti [[wiki]] come [[Wikipedia]] e [[Wikizionario]]. |
|||
== Cenni storici == |
|||
Nato nel [[1994]] ad opera del danese [[Rasmus Lerdorf]], PHP era in origine una raccolta di ''script'' [[Common Gateway Interface|CGI]] che permettevano una facile gestione delle pagine personali. Il significato originario dell'[[acronimo]] era '''''P'''ersonal '''H'''ome '''P'''age'' (secondo l'annuncio originale di PHP 1.0 da parte dell'autore sul newsgroup comp.infosystems.www.authoring.cgi<ref>{{cita web |titolo=Announce: Personal Home Page Tools (PHP Tools) |url=http://groups.google.ch/group/comp.infosystems.www.authoring.cgi/msg/cc7d43454d64d133?oe=UTF-8&output=gplain |data=8 giugno 1995 |accesso=6 luglio 2011}}</ref>). |
|||
Il pacchetto originario venne in seguito esteso e riscritto dallo stesso Lerdorf in [[C (linguaggio)|C]], aggiungendo funzionalità quali il supporto al database [[mSQL]] e prese a chiamarsi '''PHP/FI''', dove ''FI'' sta per '''''F'''orm '''I'''nterpreter'' (interprete di ''form''), prevedendo la possibilità di integrare il codice PHP nel codice [[HTML]] in modo da semplificare la realizzazione di pagine dinamiche. In quel periodo, 50.000 domini Internet annunciavano di aver installato PHP. |
|||
A questo punto il linguaggio cominciò a godere di una certa popolarità tra i progetti ''open source'' del ''[[web]]'', e venne così notato da due giovani programmatori: [[Zeev Suraski]] e [[Andi Gutmans]]. I due collaborarono nel [[1998]] con Lerdorf allo sviluppo della terza versione di PHP (il cui acronimo assunse il significato attuale) riscrivendone il motore che fu battezzato [[Zend]] da una contrazione dei loro nomi. Le caratteristiche chiave della versione PHP 3.0, frutto del loro lavoro, erano la straordinaria estensibilità, la connettività ai [[database]] e il supporto iniziale per il [[Programmazione orientata agli oggetti|paradigma a oggetti]]. Verso la fine del 1998 PHP 3.0 era installato su circa il 10% dei server web presenti su Internet. |
|||
PHP diventò a questo punto talmente maturo da competere con [[Active Server Pages|ASP]], linguaggio ''lato server'' analogo a PHP sviluppato da [[Microsoft]], e cominciò ad essere usato su larga scala. La versione 4 di PHP venne rilasciata nel [[2000]] e prevedeva notevoli migliorie. |
|||
Attualmente siamo alla quinta versione, sviluppata da un [http://www.php.net/credits.php team] di programmatori, che comprende ancora Lerdorf, oltre a Suraski e Gutmans. |
|||
La popolarità del linguaggio PHP è in costante crescita grazie alla sua flessibilità: nel [[Giugno]] [[2001]], ha superato il milione di siti che lo utilizzano. |
|||
Nell'ottobre [[2002]], più del 45% dei [[server]] [[Apache HTTP Server|Apache]] usavano PHP. |
|||
Nel gennaio [[2005]] è stato insignito del titolo di "Programming Language of 2004" dal [[TIOBE Programming Community Index]], classifica che valuta la popolarità dei linguaggi di programmazione sulla base di informazioni raccolte dai [[Motore di ricerca|motori di ricerca]]. |
|||
Nel [[2005]] la configurazione [[LAMP (piattaforma)|LAMP]] ([[Linux]], [[Apache HTTP Server|Apache]], [[MySQL]], PHP) supera il 50% del totale dei server sulla rete mondiale. |
|||
Nel 2008 PHP 5 è diventata l'unica versione stabile in fase di sviluppo. A partire da PHP 5.3.0, PHP implementa una funzione chiamata "late static binding" che può essere utilizzata per fare riferimento alla classe chiamata in un contesto di eredità statica. |
|||
A partire dal 5 febbraio 2008, a causa dell'iniziativa '''GoPHP5''', sostenuta da una serie di sviluppatori PHP, molti dei progetti open-source di alto profilo cessano di supportare PHP 4 nel nuovo codice e promuovono il passaggio da PHP 4 a PHP 5. |
|||
== Caratteristiche == |
|||
PHP riprende per molti versi la [[sintassi]] del [[C (linguaggio)|C]], come peraltro fanno molti linguaggi moderni, e del [[Perl]]. È un linguaggio a [[tipizzazione debole]] e dalla versione 5 migliora il supporto al paradigma di [[Programmazione orientata agli oggetti|programmazione ad oggetti]]. Certi costrutti derivati dal [[C (linguaggio)|C]], come gli operatori fra [[Bit (informatica)|bit]] e la gestione di [[Stringa (informatica)|stringhe]] come [[array]], permettono in alcuni casi di agire a basso livello; tuttavia è fondamentalmente un [[Linguaggio di programmazione ad alto livello|linguaggio di alto livello]], caratteristica questa rafforzata dall'esistenza delle sue moltissime [[Application programming interface|API]], oltre 3.000 funzioni del nucleo base. PHP è in grado di interfacciarsi a innumerevoli [[DBMS|database]] tra cui [[MySQL]], [[PostgreSQL]], [[Oracle]], [[Firebird SQL|Firebird]], [[DB2|IBM DB2]], [[Microsoft SQL Server]], solo per citarne alcuni, e supporta numerose tecnologie, come [[XML]], [[SOAP]], [[Internet Message Access Protocol|IMAP]], [[File Transfer Protocol|FTP]], [[CORBA]]. Si integra anche con altri linguaggi/piattaforme quali [[Linguaggio di programmazione Java|Java]] e [[.NET]] e si può dire che esista un [[wrapper]] per ogni libreria esistente, come CURL, [[GD Graphics Library|GD]], [[Gettext]], GMP, Ming, [[OpenSSL]] ed altro. |
|||
Fornisce un'[[Application programming interface|API]] specifica per interagire con [[Apache HTTP Server|Apache]], nonostante funzioni naturalmente con numerosi altri [[Web server|server web]]. È anche ottimamente integrato con il database [[MySQL]], per il quale possiede più di una API. Per questo motivo esiste un'enorme quantità di [[script]] e [[Libreria software|librerie]] in PHP, disponibili liberamente su [[Internet]]. La versione 5, comunque, integra al suo interno un piccolo database embedded, [[SQLite]]. |
|||
Dispone di un archivio chiamato [[PEAR]] che mette a disposizione un framework di [[Libreria software|librerie]] riusabili per lo sviluppo di applicazioni PHP e di [http://pecl.php.net PECL] che raccoglie tutte le estensioni conosciute scritte in C. |
|||
PHP non ha ancora un supporto nativo per le stringhe Unicode o multibyte; il supporto Unicode è in fase di sviluppo per una futura versione di PHP, e consentirà di usare caratteri non ASCII in stringhe e nomi di funzioni, classi e metodi. |
|||
=== Sicurezza === |
|||
La percentuale di software non sicuro scritto in PHP, sul totale di tutte le falle nei software elencate dal [[Common Vulnerabilities and Exposures]], ammontava al: 12% nel 2003, 20% nel 2004, 28% nel 2005, 43% nel 2006, 36% nel 2007, 34.8% nel 2008, 29.9% nel 2009 e 27.2% nel 2010.<ref>{{cita web |titolo=PHP-related vulnerabilities on the National Vulnerability Database |url=http://www.coelho.net/php_cve.html |accesso=6 luglio 2011}}</ref> La maggior parte di questi punti vulnerabili possono essere sfruttati tramite remoto, ovvero senza accedere al computer che ospita l'applicazione vulnerabile. Le falle più comuni sono dovute al mancato adempimento delle [[best practice]] nella programmazione e da vulnerabilità presenti in codice scritto in versioni vecchie di PHP. |
|||
=== Gestione dei parametri === |
|||
Il PHP permette il passaggio di parametri da una pagina all'altra attraverso tre [[array]] di variabili: $_GET, $_POST e $_SESSION. Il primo tipo di parametro viene passato tramite la stringa che compare nella barra dell'indirizzo del [[browser]]; il secondo viene passato in background, mentre il terzo rimane persistente durante la [[sessione]]. |
|||
== Esempi di codice == |
|||
=== Utilizzo delle variabili === |
|||
<source lang=php> |
|||
$title = "Wikipedia"; |
|||
</source> |
|||
Con questa istruzione viene definita una variabile e le viene assegnato il valore stringa "Wikipedia". |
|||
L'istruzione seguente: |
|||
<source lang=php>echo $title;</source> |
|||
visualizzerà il contenuto della variabile <code>title</code>, ossia la scritta “Wikipedia”. Se invece la variabile non esiste, l'istruzione non visualizzerà nulla. |
|||
È anche possibile includere una pagina PHP all'interno di un'altra (e quindi ad esempio di poterne utilizzare le variabili) con l'istruzione |
|||
<source lang=php> |
|||
require 'otherPage.php'; |
|||
</source> |
|||
=== Hello World! in PHP === |
|||
<source lang=php> |
|||
<?php |
|||
echo "Hello World!\n"; //scrive nella pagina "Hello World!". Il simbolo ''\n'' inserisce un ''newline'', andando a capo. |
|||
?> |
|||
</source> |
|||
=== Una funzione con controllo sugli argomenti === |
|||
<source lang="php"> |
|||
<?php |
|||
function get_hello_world($value1, $value2) |
|||
{ |
|||
$result = ""; |
|||
if ($value1 != "") |
|||
{ |
|||
$result .= $value1; |
|||
} |
|||
// .= è un operatore di concatenazione; |
|||
// Il "." (punto) deriva dall'operazione di concatenazione delle stringhe nella teoria dei linguaggi; |
|||
if (($value1 != " ") && ($value2 != " ")) |
|||
{ |
|||
$result .= " "; |
|||
} |
|||
// !empty($value2) equivale a: $value2 != "" |
|||
// Il "!" (punto esclamativo) serve per negare un valore booleano (true / false) |
|||
if (!empty($value2)) |
|||
{ |
|||
$result .= $value2; |
|||
} |
|||
return $result; |
|||
} |
|||
echo get_hello_world("Hello", "world"); |
|||
?> |
|||
</source> |
|||
=== Il Ciclo for === |
|||
<source lang=php> |
|||
<?php |
|||
// In questo caso la variabile $n viene stampata a video, successivamente |
|||
// viene incrementata di 1, il ciclo termina quando $n è uguale a 9. |
|||
for($n = 0; $n <= 9; $n++) |
|||
{ |
|||
echo $n; |
|||
} |
|||
// Output -> 0123456789 |
|||
?> |
|||
</source> |
|||
=== I cicli while === |
|||
<source lang=php> |
|||
<?php |
|||
// In questo caso vediamo come stampare a video dei risultati estratti |
|||
// da un database MySQL, eseguendo una query SQL |
|||
// Questo script è incompleto, in quanto prima è necessario effettuare |
|||
// il collegamento al database MySQL |
|||
$esempio = mysql_query("SELECT id FROM persone"); |
|||
while($riga = mysql_fetch_array($esempio)) |
|||
{ |
|||
echo $riga[0] . "<br />"; |
|||
} |
|||
/* |
|||
In questo modo estraiamo dei dati da un database MySQL |
|||
sotto forma di array che verrà poi stampato tramite un ciclo while |
|||
*/ |
|||
?> |
|||
</source> |
|||
=== 99 Bottles of Beer === |
|||
Il seguente esempio stampa il testo della canzone ''[[99 Bottles of Beer]]''. |
|||
<source lang="php"> |
|||
<?php |
|||
/* |
|||
* Questo è un commento. Altri modi per commentare sono i simboli // e # |
|||
* Questo tipo di commenti non ha bisogno degli asterischi (*) all'inizio |
|||
* di ogni riga, ma lo si fa per convenzione. I simboli // e # |
|||
* commentano solo il testo che si trova dopo di essi e fino alla fine della riga; |
|||
* non c'è bisogno di finire il commento con qualche carattere speciale. |
|||
*/ |
|||
/* |
|||
* Prima definiamo una funzione chiamata "plural". |
|||
* Restituisce una "s" se l'argomento passato non è 1. |
|||
*/ |
|||
function plural($number) |
|||
{ |
|||
// L'operatore ternario (!= ? :) è una struttura condizionale |
|||
// simile a if-else: (condizione ? true : false) |
|||
return ($number != 1 ? "s" : ""); |
|||
} |
|||
// Definiamo una variabile chiamata $a_capo che contiene un a capo HTML, |
|||
// un carattere di ritorno e uno di nuova riga: |
|||
$a_capo = "<br />\r\n"; |
|||
for ($i = 99; $i > 0; $i--) { |
|||
print "$i bottle" . plural($i) . " of beer on the wall,$a_capo"; |
|||
// Non abbiamo bisogno di ripetere il comando print per ogni riga: |
|||
print "$i bottle" . plural($i) . " of beer.$a_capo |
|||
Take one down, pass it around,$a_capo" . |
|||
($i - 1 != 0 ? $i - 1 : "no more") . |
|||
" bottle" . plural($i - 1) . " of beer on the wall.$a_capo$a_capo"; |
|||
/* |
|||
* PHP permette di creare stringhe su più righe, finché |
|||
* trova un punto e virgola (;) che termina l'istruzione. |
|||
* Un punto (.) concatena insieme più stringhe. |
|||
* Le variabili, che iniziano con il carattere "$", sono interpretate |
|||
* anche dentro i doppi apici ("), ma non dentro gli apici singoli ('). |
|||
* Le funzioni, come plural(), non sono interpretate fra gli apici. |
|||
*/ |
|||
} |
|||
print "Go to the store, $a_capo buy some more, $a_capo 99 bottles of beer on the wall!"; |
|||
?> |
|||
</source> |
|||
== php.ini == |
|||
Il file di configurazione di PHP, chiamato php3.ini in PHP 3, e poi semplicemente php.ini nelle versioni successive, è letto all'avvio dell'interprete del linguaggio e fornisce le impostazioni dei vari moduli con cui l'interprete è stato compilato. Nella versione server modulare di PHP, questo avviene solo una volta, all'avvio del [[Web Server|server web]]. Per le versioni [[Common Gateway Interface|CGI]] e [[CLI]], invece, è invocato ad ogni richiesta. |
|||
Per visualizzare tutte le opzioni di configurazione è possibile utilizzare la funzione phpinfo(). |
|||
== Ambienti di sviluppo == |
|||
{{div col}} |
|||
* {{en}} [http://www.aptana.com Aptana] |
|||
* {{en}} [http://www.embarcadero.com/products/delphi_for_php/ Delphi4php] |
|||
* {{en}} [http://bluefish.openoffice.nl Bluefish] |
|||
* {{en}} [http://www.dreamweaver.com Dreamweaver CS5.5] |
|||
* {{en}} [http://www.blumentals.net/webuilder/ WeBuilder 2007] |
|||
* {{en}} [http://www.maguma.com Maguma Workbench] |
|||
* {{en}} [http://www.nusphere.com NuSphere PHPEd] |
|||
* {{en}} [http://www.mpsoftware.dk PHP Designer 2008] |
|||
* {{en}} [http://www.eclipse.org/pdt PDT (Eclipse Platform)] |
|||
* {{en}} [http://www.phpeclipse.de PHPEclipse (Eclipse Platform)] |
|||
* {{en}} [http://netbeans.org NetBeans] |
|||
* {{en}} [http://devphp.sourceforge.net Dev-PHP] |
|||
* {{en}} [http://www.waterproof.fr PHPEdit] |
|||
* {{en}} [http://quanta.kdewebdev.org Quanta Plus] |
|||
* {{en}} [http://www.phpside.org Side] |
|||
* {{en}} [http://www.xored.com/trustudio Xored TruStudio] |
|||
* {{en}} [http://www.zend.com/store/products/zend-studio.php Zend Studio] |
|||
* {{en}} [http://www.c-point.com/php_editor.php Antechinus PHP Editor] |
|||
* {{en}} [http://www.gphpedit.org gPHPEdit] |
|||
* {{en}} [http://www.jedit.org jEdit] |
|||
* [http://www.pspad.com/it PSPad] |
|||
* {{en}} [http://www.vim.org Vim] |
|||
* {{en}} [http://www.gnu.org/software/emacs/ Emacs] |
|||
* {{en}} [http://www.scintilla.org/SciTE.html SciTE] |
|||
* [http://hapedit.free.fr HAP EDIT] |
|||
* {{en}} [http://www.activestate.com/komodo-ide Komodo IDE] |
|||
* {{en}} [http://www.activestate.com/komodo-edit Komodo Edit] |
|||
* [http://notepad-plus.sourceforge.net/it/site.htm Notepad++] |
|||
* [[Notepad]] (blocco note di [[Windows]]) |
|||
* [[Notepad2]] (evoluzione del notepad di [[Windows]]) |
|||
* [[gedit]] |
|||
* [[PhpGedView]] |
|||
* Qualsiasi altro [[editor di testo]] |
|||
{{div col end}} |
|||
== Note == |
|||
<references/> |
|||
== Bibliografia == |
|||
* Zak Greant, Graeme Merrall, Torben Wilson, Brett Michlitsch (2002): ''PHP Functions Essential Reference'', Sams, ISBN 0-7357-0970-X |
|||
* Luke Welling, Laura Thomson (2004): ''PHP and MySQL Web Development'', 3rd ed., SAMS, ISBN 0-672-32672-8 |
|||
* Matt Zandstra (2004): ''PHP 5 Objects, Patterns, and Practice'', Apress, ISBN 1-59059-380-4 |
|||
* Eric Rosebrock, Eric Filson (2004): ''Setting Up LAMP: Getting Linux, Apache, MySQL, and PHP Working Together'', SYBEX, ISBN 0-7821-4337-7 |
|||
* Cristian Darie, Mihai Bucica (2004): ''Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional'', Apress, ISBN 1-59059-392-8 |
|||
* David Powers (2005): ''Foundation PHP 5 for Flash'', Friends of ED, ISBN 1-59059-466-5 |
|||
* Elizabeth Naramore, (2005): ''Beginning PHP5, Apache, and MySQL Web Development'', Wrox, ISBN 0-7645-7966-5 |
|||
* Thomas Myer (2005): ''No Nonsense XML Web Development With PHP'', [[SitePoint]], ISBN 0-9752402-0-X |
|||
* Marc Wandschneider (2005): ''Core Web Application Development with PHP and MySQL'', Prentice-Hall, ISBN 0-13-186716-4 |
|||
* Steven Holzner (2005): ''Spring Into PHP 5 '', Addison-Wesley, ISBN 0-13-149862-2 |
|||
* (2005): ''Building Online Communities with phpBB 2 '', Packt Publishing, ISBN 1-904811-13-2 |
|||
* (2005): ''Web Standards Programmer's Reference : HTML, CSS, JavaScript, Perl, Python, and PHP'', Wrox, ISBN 0-7645-8820-6 |
|||
* Chris Newman (2005): ''Sams Teach Yourself PHP in 10 Minutes'', ISBN 0-672-32762-7 |
|||
* Paul Hudson (2005): ''PHP in a Nutshell'', O'Reilly, ISBN 0-596-10067-1 |
|||
* Andi Gutmans, Stig S. Bakken, Derick Rethans (2005): ''PHP 5: Guida completa'', Apogeo, ISBN 88-503-2304-2 |
|||
* Jack Herrington (2006), ''PHP Trucchi e segreti'', Tecniche Nuove Hops, ISBN 88-481-1951-4 |
|||
* Rasmus Lerdorf (2003), ''PHP Pocket Reference'', Tecniche Nuove Hops, ISBN 88-8378-070-1 |
|||
* Peter B. MacIntyre (2010), ''PHP – Le tecniche per scrivere il codice migliore'', Tecniche Nuove, ISBN 978-88-481-2505-5 |
|||
== Voci correlate == |
|||
* [[Perl]] |
|||
* [[Active Server Pages]] |
|||
== Altri progetti == |
|||
{{interprogetto|commons=Category:PHP|b=PHP|v=PHP}} |
|||
== Collegamenti esterni == |
|||
* [http://php.net/ PHP.net] |
|||
* {{Dmoz|World/Italiano/Computer/Programmazione/Php/|Php}} |
|||
{{Framework per applicazioni web}} |
|||
{{Principali linguaggi di programmazione}} |
|||
{{Portale|informatica|software libero|Telematica}} |
|||
[[Categoria:Formati di file]] |
|||
[[Categoria:Linguaggio PHP]] |
|||
{{Link VdQ|en}} |
|||
Latest revision as of 21:54, 10 December 2020
This page has been moved to PHP configuration on mediawiki.org.
Any modifications or additions to this page should be made on mediawiki.org instead. |