PHP (Italiano)

From ArchWiki
Jump to: navigation, search

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.

Configurazione

Il file di configurazione principale di PHP è ben documentato e si trova a /etc/php/php.ini.

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 (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.

mcrypt

  • Per il modulo mcrypt, installate php-mcrypt[broken link: package not found] 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] ; 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"

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

  • 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 | Komodo Edit (free)

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