За последние 24 часа нас посетили 20944 программиста и 1108 роботов. Сейчас ищут 389 программистов ...

Переключение версий PHP

Тема в разделе "Настройка веб-сервера", создана пользователем [vs], 26 янв 2018.

  1. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Было нужно запустить старый код, с функциями mysql_. На сервере установлен nginx как прокси к apache, а PHP 7 работает как модуль apache. Я решил собрать php 5.4.45 с поддержкой php-fpm
    Код (Text):
    1. # wget -O php-5.4.tar.gz http://ca1.php.net/get/php-5.4.45.tar.gz/from/this/mirror
    2. # tar xvzf php-5.4.tar.gz
    3. # ./configure --prefix=/usr/local/php-5.4 --enable-fpm --with-fpm-user=apache --enable-mysqlnd --disable-ipv6 --with-openssl --with-zlib --enable-bcmath --with-bz2 --with-curl --enable-exif --enable-ftp --with-gd --enable-gd-native-ttf --with-imap-ssl --enable-mbstring --with-mcrypt --with-mhash --with-mysql --with-mysqli  --enable-pcntl --with-pdo-mysql --with-pdo-sqlite --enable-shmop  --enable-soap --enable-sockets --with-xmlrpc --with-xsl
    4. # make
    5. # make install
    запускать этот php-fpm на специфическом порту
    Код (Text):
    1. listen = 127.0.0.1:8999
    и в директории, в которой мне нужен PHP 5.4.45, передавать запросы туда с помощью .htaccess
    Код (Text):
    1. RewriteEngine On
    2. RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$
    3. RewriteCond %2 -f
    4. RewriteRule . fcgi://127.0.0.1:8999/%1 [L,P]
    5. RewriteOptions Inherit
    Кто подскажет другие способы?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @[vs] дык пусть ngx сразу проксит на нужный fpm.
     
    denis01 нравится это.
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    У меня было так: nginx использует php-fpm v7, а apache за его спиной php-cgi v5.

    Тому сайту, которому не нужен PHP5, даю конфигурацию без проксирования в апачи. Да, приходится отказаться от htaccess в этом случае и попотеть с рерайтингом в nginx.
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Как в Ubuntu 16.04 сделать собранный выше из сорцев php-fpm сервисом:
    1. Создать файл
      nano /lib/systemd/system/php-5.4-fpm.service

    2. Содержимое файла
      Код (Text):
      1. [Unit]
      2. Description=The PHP 5.4.5 FastCGI Process Manager
      3. After=network.target
      4.  
      5. [Service]
      6. Type=simple
      7. PIDFile=/usr/local/php-5.4/var/run/php-fpm.pid
      8. ExecStart=/usr/local/php-5.4/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php-5.4/etc/php-fpm.conf
      9. ExecReload=/bin/kill -USR2 $MAINPID
      10.  
      11. [Install]
      12. WantedBy=multi-user.target
    3. systemctl enable php-5.4-fpm.service
    4. systemctl daemon-reload
    5. Сервис готов к запуску: service php-5.4-fpm start