# PHP (Italiano)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The translation of this article or section does not reflect the original text.

Reason: Last updated in 2015, out of sync with English page (Discuss in Talk: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` 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 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 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. 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`, 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"`

This article or section is out of date.

Reason: Usare APCu/OPcache https://archlinux.org/news/php-55-available-in-the-extra-repository/ (Discuss in Talk:PHP (Italiano)#)

- 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[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

## Altre risorse

- PHP Official Website

Category:

- Programming languages (Italiano)

Hidden categories:

- Pages or sections flagged with Template:Bad translation
- Pages or sections flagged with Template:Out of date