PHP (Italiano)
PHP è un linguaggio di scripting general-purpose ampiamente utilizzato. È specialmente indicato per lo sviluppo Web e può essere integrato nell'HTML.
Installazione
Installare il pacchetto php dagli official repositories.
Si noti che per eseguire script PHP come CGI, è necessario il pacchetto php-cgi.
Setup
PHP può essere eseguito in modalità standalone, tuttavia in genere viene utilizzato con server HTTP come Apache, nginx e lighttpd.
-
standalone:
php -S localhost:8000 -t public_html/
. Leggi la documentazione - Apache: vedi Apache HTTP Server
- lighttpd: vedi lighttpd
- nginx: vedi nginx
Configurazione
Il file di configurazione principale di PHP è ben documentato e si trova a /etc/php/php.ini
.
- Si consiglia di impostare la propria timezone (lista delle timezones) in
/etc/php/php.ini
per esempio:
date.timezone = Europe/Rome
- Se si desidera visualizzare gli errori per il debug del priorio codice PHP, impostare
display_errors
suOn
in/etc/php/php.ini
:
display_errors=On
- Ricordarsi di aggiungere un gestore di file per
.phtml
, nel caso se ne abbia bisogno, in/etc/httpd/conf/extra/php5_module.conf
:
DirectoryIndex index.php index.phtml index.html
Estensioni
Nei repository ufficiali si possono trovare anche diverse estensioni per PHP comunemente usate:
# pacman -Ss php-
gd
Per php-gd decommentare questa riga in /etc/php/php.ini
:
extension=gd.so
imagemagick
Per imagemagick eseguire # pecl install imagick
. I file binari di pecl sono inclusi nel pacchetto php-pearAUR. Quindi aggiungere
extension=imagick.so
a /etc/php/php.ini
.
pthreads
Se si desidera avere POSIX multi-threading è necessaria l'estensione pthreads. Per installare l'estensione pthreads (https://pecl.php.net/package/pthreads) tramite pecl
si deve usare una versione compilata di PHP con il thread safety support flag --enable-maintainer-zts
. Attualmente il modo più semplice per farlo sarebbe di fare il rebuild del pacchetto originale con la flag.
Si possono trovare altre istruzioni alla pagina PHP pthreads extension.
mcrypt
- Per il modulo
mcrypt
, installate php-mcryptAUR e decommentateextension=mcrypt.so
in/etc/php/php.ini
:
extension=mcrypt.so
PCNTL
PCNTL consente di creare processi direttamente nella macchina lato server. Tuttavia dà anche il potere a PHP di complicare le cose. Si tratta di un'estensione di PHP che non deve essere caricata con leggerezza, a causa del grande potere che dà a PHP. Per attivare (di default non è attiva) questa estensione PCNTL deve essere compilata all'interno di PHP.
Zend Core + Apache
Zend Core è la distribuzione ufficiale di PHP fornito da zend.com. Essa comprende un installer/updater, Zend Optimizer, supporto Oracle, e le librerie necessarie. Tuttavia, manca il supporto per PostgreSQL, Firebird, e ODBC.
- Installare mod_fcgid, un modulo FastCGI per Apache (quello ufficiale fa schifo).
- Installare Zend Core (official PHP distribution)
- Disinstallare il pacchetto php.
- Scaricare e installare zend core da [1][link interrotto 2020-08-04] ; non fategli installare il pacchetto apache o impostare il web server. Si installa sempre in
/usr/local/Zend/Core
per via di un hard-coded path. - Creare uno script
/usr/local/bin/zendcore
e creare dei symlinks a php, php-cgi, pear, phpize sotto /usr/local/bin#!/bin/bash
export LD_LIBRARY_PATH="/usr/local/Zend/Core/lib"
exec /usr/local/Zend/Core/bin/`basename $0` "$@"
- Setup Apache:
- In
/etc/httpd/conf/httpd.conf
, aggiungereLoadModule fcgid_module modules/mod_fcgid.so
<Directory /srv/http>
AddHandler fcgid-script .php
FCGIWrapper /usr/local/bin/php-cgi .php
Options ExecCGI
Allow from all
</Directory>
SocketPath /tmp/fcgidsock
SharememPath /tmp/fcgidshm - Ricordarsi di cambiare il Directory path
- In
- Disabilitare Zend Optimizer (così si può usare la cache):
- Modificare
/etc/php.ini
, decommentare la seguente riga quasi alla fine del file:zend_extension_manager.optimizer="/usr/local/Zend/Core/lib/zend/optimizer"
- Modificare
- Installare APC (Cache PHP alternativa):
- Eseguire
pear install pecl.php.net/apc
come superuser. - Modificare
/etc/php.ini
, aggiungere la riga dopo "; Zend Core extensions..." (line 1205):extension=apc.so
- Eseguire
- Aggiornare Zend Core e/o installare altre componenti
- Basta eseguire
/usr/local/Zend/Core/setup
- Basta eseguire
Strumenti per lo sviluppo
Komodo
Buona integrazione per PHP+HTML+JavaScript. Manca la formattazione del codice e il supporto unicode nei commenti doc.
Komodo IDE[link interrotto 2020-08-04] | Komodo Edit (free)[link interrotto 2020-08-04]
Aggiungere codifiche personalizzate:
- Modificare
KOMODO_INSTALL_DIR/lib/mozilla/components/koEncodingServices.py
, riga 84, aggiungere:
('cp950', 'Chinese(CP-950/Big5)', 'CP950', '', 1,'cp950'), ('cp936', 'Chinese(CP-936/GB2312)', 'CP936', '', 1,'cp936'), ('GB2312', 'Chinese(GB-2312)', 'GB2312', '', 1,'GB2312'), ....
Il formato è (encoding name in python, description, short description, BOM, is ASCII-superset?, font encoding)
Netbeans
Un IDE completo per molti linguaggi incluso PHP. Include caratteristiche come il debug, refactoring, code templating, autocompletamento, funzionalità XML e web design e funzionalità di sviluppo (ottima funzionalità di completamento automatico per CSS e notifiche/suggerimenti per il codice PHP/Javascript).
Eclipse PDT
Eclipse PDT[link interrotto 2020-08-04] non è molto completo allo stato attuale (v0.7).
Necessita di altri plugin per il supporto di JavaScript e delle query al database.
Zend Studio
Zend Studio è il PHP IDE ufficiale, basato su eclipse. Ha l'autocompletamento, formattazione del codice avanzata, editor HTML WYSIWYG, refactoring, e tutte le funzionalità di eclipse come l'accesso al database, l'integrazione del version control e qualunque altra cosa si possa ottenere da altri plugin per eclipse. Si può installare il pacchetto zendstudioAUR su AUR.
Aptana Studio
Un buon IDE per PHP e web development. La versione corrente (3.2.2) non ha un debugger PHP.
Zend Code Analyzer
Un analizzatore di codice PHP di Zend Studio. Indispensabile per ogni programmatore PHP che si rispetti.
Installazione
- Scaricare ed installare Zend Studio Neon
- Nella cartella di installazione, eseguire
find . -name "ZendCodeAnalyzer
per avere il percorso. - Copiare ZendCodeAnalyzer in
/usr/local/bin/zca
- Ora si può rimuovere zend studio; non serve nessuna chiave o cos'altro.
Vim Integration
Aggiungere le seguenti righe nel proprio .vimrc
:
autocmd FileType php setlocal makeprg=zca\ %<.php autocmd FileType php setlocal errorformat=%f(line\ %l):\ %m
Eclipse Integration
Error Link plugin:
- Symlink zca verso build.zca (così Error Link può riconoscerlo)
- Installare Sunshade plugin suite;
- Preference -> Sunshade -> Error Link -> Add:
^(.*\.php)\(line (\d+)\): ()(.*)
- Run -> External Tools -> Open External Tools Dialog -> Select "Program" -> Click on "New":
Name: Zend Code Analyzer
Location: /usr/local/bin/build.zca
Working Directory: ${container_loc}
Arguments: --recursive ${resource_name}
Komodo Integration
Toolbox -> Add -> New Command:
- Command: zca --recursive %F
- Run in: Command Output Tab
- Parse output with:
^(?P<file>.+?)\(line (?P<line>\d+)\): (?P<content>.*)$
- Select Show parsed output as a list
Risoluzione problemi
PHP Fatal error: Class 'ZipArchive' not found
Assicurarsi che l'estensione zip sia abilitata.
$ grep zip /etc/php/php.ini
extension=zip.so
/etc/php/php.ini not parsed
Se il proprio php.ini non viene analizzato, il file ini è denominato in base alla SAPI che si sta utilizzando. Per esempio se si sta utilizzando UWSGI il file dovrebbe essere nominato /etc/php/php-uwsgi.ini, se si sta utilizzando CLI /etc/php/php-cli.ini