PHP

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page PHP and the translation is 100% complete.

Other languages:
English • ‎italiano • ‎日本語 • ‎polski • ‎русский
Resources

PHP è un linguaggio di scripting general-purpose lato server per produrre pagine web.

Installazione

USE flags

Portage riconosce la USE flag globale php per abilitare il supporto per PHP negli altri pacchetti. Abilitare questa USE flag farà in modo di inserire automaticamente il pacchetto dev-lang/php all'aggiornamento delle dipendenze profonde nell'impostazione di @world. Per prima cosa impostare la USE flag globale sul file /etc/portage/make.conf:

FILE /etc/portage/make.confAggiungere php come USE flag globale
USE="php"

Le USE flags più importanti del pacchetto PHP, cioè le USE flags SAPI (Server API), sono apache2, cgi, e fpm. Unitamente a queste flags, c'è anche una elaborata lista di flags utili per abilitare varie caratteristiche dell'interprete PHP:

USE flags for dev-lang/php The PHP language runtime engine

acl Add support for Access Control Lists global
apache2 Add Apache2 support global
bcmath Add support for libbcmath global
berkdb Add support for sys-libs/db (Berkeley DB for MySQL) global
bzip2 Use the bzlib compression library global
calendar Add support for calendars (not using mcal!) global
cdb Add support for the CDB database engine from the author of qmail global
cgi Add CGI script support global
cjk Add support for Multi-byte character languages (Chinese, Japanese, Korean) global
cli Enable CLI SAPI local
coverage Include gcov symbols for test coverage and lcov reports. Only useful for extension developers, and requires GCC. local
crypt Add support for encryption -- using mcrypt or gpg where applicable global
ctype Enable ctype functions global
curl Add support for client-side URL transfer library global
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces global
embed Enable embed SAPI local
enchant Add supports Enchant spelling library. local
exif Add support for reading EXIF headers from JPEG and TIFF images global
fileinfo Add fileinfo extension support local
filter Add filter extension support local
firebird Add support for the Firebird relational database global
flatfile Add dbm support for flat files global
fpm Enable the FastCGI Process Manager SAPI local
ftp Add FTP (File Transfer Protocol) support global
gd Adds support for gd (bundled with PHP) local
gdbm Add support for sys-libs/gdbm (GNU database libraries) global
gmp Add support for dev-libs/gmp (GNU MP library) global
hash Enable the hash extension local
iconv Enable support for the iconv character set conversion library global
imap Add support for IMAP (Internet Mail Application Protocol) global
inifile Add dbm support for .ini files global
intl Enables the intl extension for extended internalization support local
iodbc Add support for iODBC library global
ipv6 Add support for IP version 6 global
json Enable JSON support local
kerberos Add kerberos support global
ldap Add LDAP support (Lightweight Directory Access Protocol) global
ldap-sasl Add SASL support for the PHP LDAP extension local
libedit Use the libedit library (replacement for readline) global
libressl Use dev-libs/libressl as SSL provider (might need ssl USE flag), packages should not depend on this USE flag global
mhash Add support for the mhash library global
mssql Add support for Microsoft SQL Server database global
mysql Add mySQL Database support global
mysqli Add support for the improved mySQL libraries global
nls Add Native Language Support (using gettext - GNU locale utilities) global
oci8-instant-client Use dev-db/oracle-instantclient-basic as Oracle provider instead of requiring a full Oracle server install global
odbc Add ODBC Support (Open DataBase Connectivity) global
opcache Enables built-in opcode cache, replacing pecl-apc et al. local
pcntl Add support for process creation functions global
pdo Enable the bundled PDO extensions local
phar Enables the phar extension to provide phar archive support local
phpdbg Enable the PHP Debug Command Line SAPI (like gdb for php) local
posix Add support for POSIX-compatible functions global
postgres Add support for the postgresql database global
qdbm Add support for the qdbm (Quick Database Manager) library global
readline Enable support for libreadline, a GNU line-editing library that almost everyone wants global
recode Enable support for the GNU recode library global
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur global
session Add persistent session support global
sharedmem Add support for shared memory use global
simplexml Support for SimpleXML global
snmp Add support for the Simple Network Management Protocol if available global
soap Add support for SOAP (Simple Object Access Protocol) global
sockets Add support for tcp/ip sockets global
spell Add dictionary support global
sqlite Add support for sqlite - embedded sql database global
ssl Add support for Secure Socket Layer connections global
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking global
sysvipc Support for System V-compatible inter-process communication global
test Workaround to pull in packages needed to run with FEATURES=test. Portage-2.1.2 handles this internally, so don't set it in make.conf/package.use anymore global
threads Add threads support for various packages. Usually pthreads global
tidy Add support for HTML Tidy global
tokenizer Add support for the PHP file parser global
truetype Add support for FreeType and/or FreeType2 fonts global
unicode Add support for Unicode global
wddx Add support for Web Distributed Data eXchange global
webp Enable webp support for GD in php-7.x local
xml Add support for XML files global
xmlreader Enable XMLReader support local
xmlrpc Support for xml-rpc library global
xmlwriter Enable XMLWriter support local
xpm Add support for XPM graphics format global
xslt Enable the XSL extension local
zip Enable ZIP file support local
zlib Add support for zlib (de)compression global

Di default l'ebuild installa la versione di sviluppo php.ini. Per installare la versione production, che ha impostazioni di sicurezza maggiori ma potrebbe essere più difficile eseguirgli il debug, aggiungere al file make.conf la seguente riga:

FILE /etc/portage/make.confInstallare il file production php.ini
PHP_INI_VERSION="production"

Entrambe le versioni di php.ini si trovano su /usr/share/doc/php-*.

Dopo aver selezionato la versione scelta di php.ini, PHP dovrebbe essere reinstallato utilizzando il comando riportato sotto nella Sezione di Emerge

Estensioni

Per installare le estensioni, per prima cosa decidere per quale versione di PHP bisogna compilare tali estensioni. Questo va fatto impostando la variabile PHP_TARGETS:

FILE /etc/portage/make.conf
PHP_TARGETS="php5-6"

Possono essere impostate più di una versione; basta aggiungere un'altra versione separata da spazio. Notare che lo slot php è chiamato "5.6" e il corrispondente valore di PHP_TARGETS è php5-6. Questo è dovuto alla corrente restrizione sul nome USE.

Emerge

Dopo aver effettuato la configurazione sopra descritta della USE flag è necessario aggiornare il sistema così che le variazioni abbiano effetto:

root #emerge --ask --update --changed-use --deep @world

Eseguire versioni multiple di PHP

Uno dei maggiori vantaggi per utilizzare Gentoo per lo sviluppo di PHP è l'utilizzo delle versioni slot. E' veramente facile muoversi tra le versioni multiple di PHP, è come eseguirle simultaneamente. Tutto ciò è fatto con il comando eselect fornito dal pacchetto app-eselect/eselect-php, il quale dovrebbe essere installato automaticamente insieme al pacchetto PHP. Per esempio, selezionando differenti versioni di PHP permette al sistema di eseguire PHP 7.0 per il cli SAPI ma PHP 5.6 per il server web di sistema. Esso permette anche di testare rapidamente un'applicazione su versioni differenti di PHP.

Per elencare le versioni disponibili per il cli SAPI, utilizzare il seguente comando:

root #eselect php list cli
 [1]   php5.5 
 [2]   php5.6 *   
 [3]   php7.0

La versione segnata con * è la versione attualmente attiva, e per verificare le altre sostituire cli con fpm,cgi oppure apache2.

Per scambiare versioni utilizzare il seguente comando:

root #eselect php set cli 3

Il numero 3 in questo esempio corrisponde al numero dell'output del sotto-comando list utilizzato sopra. La versione 7.0 di PHP viene così utilizzata con il seguente comando:

root #php -v
PHP 7.0.10-pl0-gentoo (cli) (built: Aug 23 2016 12:38:44) ( NTS )

Configurazione

La configurazione di PHP si trova nel file /etc/php, il quale contiene una sottodirectory per ogni SAPI e per ogni versione di PHP. Per esempio, i files di configurazione per il SAPI apache2 PHP-5.6 sono installati in /etc/php/apache2-php5.6.

Web servers

Per utilizzare PHP dal lato server, deve essere installato e configurato per utilizzare PHP un web server. Qualche web server popolare è brevemente menzionato successivamente.

Nginx

Per installare nginx basta semplicemente emergerlo:

root #emerge --ask www-servers/nginx
Important
Se i valori NGINX_MODULES_HTTP sono lasciati di default in make.conf, assicurarsi che il modulo fastcgi sia abilitato.

Una volta che Nginx è installato, modificare la sezione server in /etc/nginx/nginx.conf come di seguito:

FILE /etc/nginx/nginx.confParte della configurazione di nginx per abilitare PHP tramite FastCGI
server {
                listen 127.0.0.1;
                server_name localhost;
 
                access_log /var/log/nginx/localhost.access_log main;
                error_log /var/log/nginx/localhost.error_log info;
 
                root /var/www/localhost/htdocs;
 
                location ~ .php$ {
                        fastcgi_pass 127.0.0.1:9000;
                        include fastcgi.conf;
                }
        }

Ora avviare i relativi servizi per avere un sito funzionante. Lo script init php-fpm avvia il Process Manager PHP FastCGI. FastCGI permette ai web servers di scaricare i calcoli PHP per questo process manager.

root #service nginx start
root #service php-fpm start

lighttpd

Warning
Non abilitare la USE flag php per il pacchetto www-servers/lighttpd. Attualmente potrebbe bloccare la compilazione.

Assicurarsi che lighttpd venga compilato con il supporto per fastcgi e che la USE flag php sia disabilitata:

FILE /etc/portage/package.use
www-servers/lighttpd fastcgi -php

Lighttpd lavora con il file di configurazione FastCGI di default, ma sfortunatamente questo file è scritto per lavorare solo con il PHP FCGI SAPI vecchio invece che con l'impostazione FCGI generale. Dopo che la USE flag php è stata disabilitata tale impostazione non è più inclusa, ed è giusto così. Tuttavia è fornita una buona base per il file di configurazione che può essere utilizzato con FPM.

Editare /etc/lighttpd/mod_fastcgi.conf simile al seguente:

FILE /etc/lighttpd/mod_fastcgi.confAbilitare FastCGI su lighttpd
server.modules += ("mod_fastcgi")
fastcgi.server = ( ".php" =>
  ( "localhost" =>
    (
      "host" => "127.0.0.1",
      "port" => "9000"
    )
  )
)

Notare la parti host e port.

Da quando Gentoo lavora con un file php-fpm.ini funzionante situato in /etc/php/fpm-php5/php-fpm.ini e lo script init, tutto quello che è necessario è l'avvio dei servizi:

root #/etc/init.d/php-fpm start
root #/etc/init.d/lighttpd start

Apache (mod_php)

Per configurare Apache in modo che sia in grado di caricare il modulo PHP5 (mod_php), aggiungere -D PHP sulla variabile APACHE2_OPTS nel file /etc/conf.d/apache2. Gli utenti si dovrebbero ricordare che anche in precedenza la versione PHP doveva essere aggiunta (tipo -D PHP5). Tuttavia, dalla versione 0.8.1 del pacchetto app-eselect/eselect-php la variabile è cambiata in -D PHP, per permettere che eventuali future nuove versioni maggiori possano essere facilmente integrate.

FILE /etc/conf.d/apache2Configurare Apache per caricare mod_php
## (settings for PHP5 and above)
APACHE2_OPTS="-D PHP"

Assicurarsi che PHP sia compilato con la USE flag apache2.

Se per qualche ragione sul sistema manca il file di integrazione del modulo PHP /etc/apache2/modules.d/70_mod_php.conf, file attualmente fornito dal pacchetto app-eselect/eselect-php quando questo viene compilato con la USE flag apache2 impostata, inserirlo manualmente. Il suo contenuto è quello mostrato qui sotto.

FILE /etc/apache2/modules.d/70_mod_php.conf
<IfDefine PHP>
	# The mod_php.so symlink is controlled by
	# eselect-php. However, the module name changed from
	# php5_module to php7_module so we can't blindly load whatever
	# is there. Instead we let eselect-php manage a small
	# configuration file that loads the appropriate module.
	#
	# This is relative to ServerRoot (see httpd.conf).
	Include ../../../var/lib/eselect-php/mod_php.conf
 
	# Tell apache that mod_php should handle PHP files.
	#
	# NOTE: Avoiding AddHandler/AddType for security (bug
	# #538822). Please read the related news item!
	<FilesMatch "\.(php|php[57]|phtml)$">
		SetHandler application/x-httpd-php
	</FilesMatch>
 
	# PHP source files which are meant to be displayed as
	# syntax-highlighted source code.
	<FilesMatch "\.phps$">
		SetHandler application/x-httpd-php-source
	</FilesMatch>
 
	DirectoryIndex index.php index.phtml
</IfDefine>

Sebbene sul sistema possono essere installate multiple versioni di PHP, Apache ne può utilizzare soltanto una. Con il comando eselect php si sceglie la versione di PHP da utilizzare.

Vedere anche