UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

251 lines (166 loc) 10.5 kB
[PHP](http://www.php.net/) è un linguaggio di scripting general-purpose ampiamente utilizzato. È specialmente indicato per lo sviluppo Web e può essere integrato nell'HTML. ## Contents * [1 Installazione](#Installazione) * [2 Setup](#Setup) * [3 Configurazione](#Configurazione) * [4 Estensioni](#Estensioni) * [4.1 gd](#gd) * [4.2 imagemagick](#imagemagick) * [4.3 pthreads](#pthreads) * [4.4 mcrypt](#mcrypt) * [4.5 PCNTL](#PCNTL) * [5 Zend Core + Apache](#Zend_Core_.2B_Apache) * [6 Strumenti per lo sviluppo](#Strumenti_per_lo_sviluppo) * [6.1 Komodo](#Komodo) * [6.2 Netbeans](#Netbeans) * [6.3 Eclipse PDT](#Eclipse_PDT) * [6.4 Zend Studio](#Zend_Studio) * [6.5 Aptana Studio](#Aptana_Studio) * [6.6 Zend Code Analyzer](#Zend_Code_Analyzer) * [6.6.1 Installazione](#Installazione_2) * [6.6.2 Vim Integration](#Vim_Integration) * [6.6.3 Eclipse Integration](#Eclipse_Integration) * [6.6.4 Komodo Integration](#Komodo_Integration) * [7 Risoluzione problemi](#Risoluzione_problemi) * [7.1 PHP Fatal error: Class 'ZipArchive' not found](#PHP_Fatal_error:_Class_.27ZipArchive.27_not_found) * [7.2 /etc/php/php.ini not parsed](#.2Fetc.2Fphp.2Fphp.ini_not_parsed) * [8 Altre risorse](#Altre_risorse) ## Installazione [Installare](/index.php/Pacman "Pacman") il pacchetto [php](https://www.archlinux.org/packages/?name=php) dagli [official repositories](/index.php/Official_repositories "Official repositories"). Si noti che per eseguire script PHP come CGI, è necessario il pacchetto [php-cgi](https://www.archlinux.org/packages/?name=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](http://docs.php.net/manual/en/features.commandline.webserver.php) * **Apache**: vedi [Apache HTTP Server](/index.php/Apache_HTTP_Server "Apache HTTP Server") * **lighttpd**: vedi [lighttpd](/index.php/Lighttpd "Lighttpd") * **nginx**: vedi [nginx](/index.php/Nginx "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](http://www.php.net/manual/en/timezones.php)) 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` su `On` 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](https://www.archlinux.org/packages/?name=php-gd) decommentare questa riga in `/etc/php/php.ini`: ``` extension=gd.so ``` ### imagemagick Per [imagemagick](https://www.archlinux.org/packages/?name=imagemagick) eseguire `# pecl install imagick`. I file binari di pecl sono inclusi nel pacchetto [php-pear](https://aur.archlinux.org/packages/php-pear/). 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 ([http://pecl.php.net/package/pthreads](http://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](/index.php/PHP_pthreads_extension "PHP pthreads extension"). ### mcrypt * Per il modulo `mcrypt`, installate [php-mcrypt](https://www.archlinux.org/packages/?name=php-mcrypt) e decommentate `extension=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](http://www.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](https://www.archlinux.org/packages/?name=mod_fcgid), un modulo FastCGI per Apache (quello ufficiale fa schifo). * Installare Zend Core (official PHP distribution) * Disinstallare il pacchetto [php](https://www.archlinux.org/packages/?name=php). * Scaricare e installare zend core da [[1]](http://www.zend.com/products/zend_core) ; **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`, aggiungere `LoadModule 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 * 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"` * 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` * Aggiornare Zend Core e/o installare altre componenti * Basta eseguire `/usr/local/Zend/Core/setup` ## 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](http://www.activestate.com/products/komodo_ide/) | [Komodo Edit (free)](http://www.activestate.com/products/komodo_edit/) 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](http://www.zend.com/pdt) 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](http://www.zend.com/products/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 [zendstudio](https://aur.archlinux.org/packages/zendstudio/) 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](http://sunshade.sourceforge.net/) 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 ## Altre risorse * [PHP Official Website](http://www.php.net/)