Article ID: 114753, created on Jan 14, 2013, last review on Nov 20, 2014

  • Applies to:
  • Plesk 11.0 for Linux

Примечание

Parallels Plesk для Linux поддерживает использование нескольких версий PHP на одном сервере начиная с версии 11.5 (см. примечания к выпуску). Инструкции по установке и настройке PHP на серверах Plesk 11.5 доступны в руководстве администратора Parallels Plesk

Решение

Примечание. Приведенные ниже инструкции предназначены только для Parallels Plesk 11.0.9. В случае с Plesk Panel 11.5, пожалуйста, используйте упомянутое выше руководство.

Чтобы можно было использовать несколько версий PHP на одном сервере, PHP должен работать в режиме fastcgi.

  1. Подключитесь к своему серверу Plesk по SSH как root, скачайте PHP, распакуйте и настройте его:

    # 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
    

    Примечание. Чтобы новый РНР был установлен в одну папку, НЕОБХОДИМО УКАЗАТЬ ПРЕФИКС. Пример:

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

    Как видите, в этом примере используется префикс /usr/local/php540-cgi/.

    Выбор префикса - это обязательный шаг, так как позволяет предотвратить конфликт между новой установкой PHP и старой версией PHP, используемой Plesk.

  2. Скомпилируйте PHP:

    # make
    
  3. Установите новую копию PHP:

    # make install
    
  4. Создайте оболочку PHP. Например, допустим, у вас есть клиент domain.com, который использует новые функции PHP, отсутствующие в PHP 5.1. Сделаем так, чтобы Apache использовал для него новую версию PHP (5.4.0):

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

    Создайте новый файл с именем .phpwrapper и следующим содержимым:

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

    Установите необходимые права доступа и привилегии для созданных файлов и папок:

    # 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. Сообщите Apache о новой оболочке PHP. Plesk позволяет изменить настройки httpd на уровне отдельных виртуальных узлов (это может быть домен или субдомен). Используем эту опцию, чтобы сообщить Apache, что (согласно нашему примеру) для domain.com нужно использовать новую оболочку PHP вместо той, которую предоставляет Plesk:

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

    Создайте файл vhost.conf со следующим содержимым:

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

    Итак, мы сказали Apache не использовать стандартную для Plesk оболочку PHP (RemoveHandler fcgid-script) и создали новую оболочку для файлов PHP. При запуске файлов PHP на домене "domain.com" Apache обратится к новой оболочке PHP и будет использовать версию, установленную на шагах 1-3.

  6. Перенастройте домен "domain.com":

    # /usr/local/psa/admin/sbin/httpdmng --reconfigure-domain domain.com
    
  7. Перезапустите Apache:

    # /etc/init.d/httpd restart
    

    Выполните шаги 4-7 для каждого домена, которому нужны дополнительные функции, доступные только в более новых версиях РНР (заменяя "domain.com" на необходимое имя домена).

56797cefb1efc9130f7c48a7d1db0f0c a914db3fdc7a53ddcfd1b2db8f5a1b9c 29d1e90fd304f01e6420fbe60f66f838 aea4cd7bfd353ad7a1341a257ad4724a 0a53c5a9ca65a74d37ef5c5eaeb55d7f

Email subscription for changes to this article
Save as PDF