Article ID: 114753, created on Aug 6, 2013, last review on May 11, 2014

  • Applies to:
  • Plesk 11.0 for Linux

Soluzione

Affinché questa soluzione sia efficace è necessario che PHP sia in esecuzione come fastcgi.

1. Impostare SSH nel server Parallels Plesk Panel (PP) come root, scaricare l'origine PHP, decomprimerla e configurarla:
# cd /usr/local/src
# mkdir php540
# cd php540
# wget http://www.php.net/get/php-5.4.0.tar.gz/from/at2.php.net/mirror
# tar xzvf php-5.4.0.tar.gz
# cd php-5.4.0

Nota: È NECESSARIO UTILIZZARE LO SWITCH PREFISSO per installare il nuovo PHP all'interno di una singola directory. Per esempio:
# ./configure '--with-libdir=lib64' '--cache-file=../config.cache' '--prefix=/usr/local/php540-cgi' '--with-config-file-path=/usr/local/php540-cgi/etc' '--disable-debug' '--with-pic' '--disable-rpath' '--enable-fastcgi' '--with-bz2' '--with-curl' '--with-freetype-dir=/usr/local/php540-cgi' '--with-png-dir=/usr/local/php540-cgi' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr/local/php540-cgi' '--with-openssl' '--with-pspell' '--with-pcre-regex' '--with-zlib' '--enable-exif' '--enable-ftp' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-wddx' '--with-kerberos' '--with-unixODBC=/usr' '--enable-shmop' '--enable-calendar' '--without-sqlite3' '--with-libxml-dir=/usr/local/php540-cgi' '--enable-pcntl' '--with-imap' '--with-imap-ssl' '--enable-mbstring' '--enable-mbregex' '--with-gd' '--enable-bcmath' '--with-xmlrpc' '--with-ldap' '--with-ldap-sasl' '--with-mysql=/usr' '--with-mysqli' '--with-snmp' '--enable-soap' '--with-xsl' '--enable-xmlreader' '--enable-xmlwriter' '--enable-pdo' '--with-pdo-mysql' '--with-pdo-pgsql' '--with-pear=/usr/local/php540-cgi/pear' '--with-mcrypt' '--enable-intl' '--without-pdo-sqlite' '--with-config-file-scan-dir=/usr/local/php540-cgi/php.d'

Come si può notare, il prefisso è: /usr/local/php540-cgi/
La scelta di un prefisso è indispensabile poiché impedisce all'installazione del nuovo PHP di interferire con la versione di PHP precedente, utilizzata da PP.

2. Compilare PHP:
# make

3. Installare il nuovo PHP:
# make install

4. Creare un wrapper PHP. Ad esempio, si supponga che un cliente, dominio.com, utilizzi alcune funzioni PHP più recenti che non esistono nella versione predefinita di PHP 5.1. Tale cliente è denominato dominio.com. È necessario istruire Apache a utilizzare la nuova versione di PHP (5.4.0) per tale cliente:
# cd /var/www/vhosts/domain.com/cgi-bin
# mkdir .cgi_wrapper
# cd .cgi_wrapper

Creare un nuovo file, .phpwrapper, con il seguente contenuto:

#!/bin/sh
export PHPRC=/var/www/vhosts/domain.com/etc/
export PHP_FCGI_CHILDREN=4
export PHP_FCGI_MAX_REQUESTS=1000
exec /usr/local/php540-cgi/bin/php-cgi


Impostare le autorizzazioni e i privilegi necessari per i file e le directory creati:
# chgrp psaserv /var/www/vhosts/domain.com/cgi-bin
# cd /var/www/vhosts/domain.com/cgi-bin
# chmod 101 .cgi_wrapper
# chmod 500 .cgi_wrapper/.phpwrapper
# chown domain.com:psacln .cgi_wrapper -R
# chattr -R +i .cgi_wrapper

5. Comunicare ad Apache l'esistenza del nuovo wrapper PHP. PP offre l'opzione di modificare l'impostazione httpd per singolo host. Tale opzione verrà utilizzata per comunicare ad Apache che dominio.com deve ricorrere al nuovo wrapper PHP invece che a quello fornito da PP:
# cd /var/www/vhosts/domain.com/conf

Creare un file vhost.conf in tale ubicazione con il seguente contenuto:

<Directory /var/www/vhosts/domain.com/httpdocs>
RemoveHandler fcgid-script
<IfModule mod_fcgid.c>
    AddHandler fcgid-script .php
    <Files ~ (\.php)>
        SetHandler fcgid-script
        FCGIWrapper /var/www/vhosts/domain.com/cgi-bin/.cgi_wrapper/.phpwrapper .php
        Options +ExecCGI
        allow from all
    </Files>
</IfModule>
</Directory>


Finora, Apache è stato istruito a non utilizzare il wrapper PHP PP predefinito (RemoveHandler fcgid-script); al contrario, è stato creato un nuovo gestore per i file PHP. Al momento di eseguire i file PHP nel dominio dominio.com Apache effettuerà una chiamata al nuovo wrapper PHP e utilizzerà il nuovo PHP installato nelle Fasi 1-3.

6. Riconfigurare il dominio dominio.com:
# /usr/local/psa/admin/sbin/httpdmng --reconfigure-domain domain.com

7. Riavviare Apache:
# /etc/init.d/httpd restart

Per ogni dominio che richieda funzioni aggiuntive disponibili esclusivamente nelle versioni di PHP più recenti di quella fornita con PP, è possibile eseguire le Fasi 4, 5, 6 e 7 (sostituendo dominio.com con il nome di dominio del cliente).

56797cefb1efc9130f7c48a7d1db0f0c a914db3fdc7a53ddcfd1b2db8f5a1b9c 29d1e90fd304f01e6420fbe60f66f838 aea4cd7bfd353ad7a1341a257ad4724a 0a53c5a9ca65a74d37ef5c5eaeb55d7f

Email subscription for changes to this article
Save as PDF