Article ID: 114753, created on Mar 12, 2014, last review on May 11, 2014

  • Applies to:
  • Plesk 11.0 for Linux

Depuis quand ce problème a-t-il été résolu ?

Parallels Plesk Panel pour Linux a pris en charge l'exécution de plusieurs versions de PHP sur le serveur depuis Parallels Plesk Panel 11.5 (voir les Notes de mises à jour en anglais). Les instructions d'installation et de configuration de PHP sur les serveurs Parallels Plesk Panel 11.5 sont disponibles dans le Guide de l'administrateur Parallels Plesk Panel (en anglais). 

Résolution

REMARQUE : les instructions ci-dessous sont uniquement pour la version 11.0.9. Pour Parallels Plesk Panel 11.5, consultez la documentation mentionnée ci-dessus.

Pour que cela fonctionne, vous devez exécuter PHP en tant que fastcgi.

  1. Établissez une connexion SSH en tant que root à votre serveur Parallels Plesk Panel (PP). Téléchargez la source PHP, dézippez-la et configurez-la :

    # 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
    

    Remarque : vous DEVEZ UTILISER LE CHANGEMENT DE PRÉFIXE pour que votre nouveau PHP soit installé dans un seul répertoire. Prenons un exemple :

    # ./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'
    

    Comme vous pouvez le voir, voici le préfixe : /usr/local/php540-cgi/

    Il est ESSENTIEL de choisir un préfixe, car cela permet d'éviter que votre nouvelle installation de PHP n'interfère avec l'ancienne version de PHP utilisée par PP.

  2. Compilez votre PHP :

    # make
    
  3. Installez votre nouveau PHP :

    # make install
    
  4. Créez un wrapper PHP. Par exemple, vous avez un client domain.com. Il utilise des nouvelles fonctionnalités de PHP qui n'existent pas dans la version PHP 5.1 par défaut. Appelons ce client domain.com. Nous dirons à Apache d'utiliser notre nouvelle version de PHP (5.4.0) pour ce client :

    # cd /var/www/vhosts/domain.com/cgi-bin
    # mkdir .cgi_wrapper
    # cd .cgi_wrapper
    

    Créez un nouveau fichier .phpwrapper, avec le contenu suivant :

    #!/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
    

    Définissez les droits et les privilèges nécessaires pour les fichiers et répertoires créés :

    # 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. Indiquez à Apache que vous avez un nouveau wrapper PHP. PP dispose d'une option pour changer la configuration httpd par hôte. Nous utiliserons cette option pour indiquer à Apache que domain.com doit utiliser notre nouveau wrapper PHP à la place de celui fourni par PP :

    # cd /var/www/vhosts/domain.com/conf
    

    Créez-y un fichier vhost.conf avec le contenu suivant :

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

    À présent, nous avons indiqué à Apache de ne pas utiliser le wrapper PHP PP par défaut (RemoveHandler fcgid-script) et nous avons à la place créé un nouveau handler pour les fichiers PHP. Lorsque vous exécuterez des fichiers PHP sur le domaine "domain.com", Apache appellera le nouveau wrapper PHP et utilisera le nouveau PHP qui a été installé dans les étapes 1-3.

  6. Reconfigurez le domaine "domain.com" :

    # /usr/local/psa/admin/sbin/httpdmng --reconfigure-domain domain.com
    
  7. Redémarrez Apache :

    # /etc/init.d/httpd restart
    

    Pour chaque domaine qui requiert une fonction supplémentaire fournie uniquement dans les versions de PHP plus récentes que celle fournie avec PP, vous pouvez suivre les étapes 4, 5, 6 et 7 (remplacez "domain.com" par le nom de domaine du client).

56797cefb1efc9130f7c48a7d1db0f0c a914db3fdc7a53ddcfd1b2db8f5a1b9c 29d1e90fd304f01e6420fbe60f66f838 aea4cd7bfd353ad7a1341a257ad4724a 0a53c5a9ca65a74d37ef5c5eaeb55d7f

Email subscription for changes to this article
Save as PDF