Было нужно запустить старый код, с функциями mysql_. На сервере установлен nginx как прокси к apache, а PHP 7 работает как модуль apache. Я решил собрать php 5.4.45 с поддержкой php-fpm Код (Text): # wget -O php-5.4.tar.gz http://ca1.php.net/get/php-5.4.45.tar.gz/from/this/mirror # tar xvzf php-5.4.tar.gz # ./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 # make # make install запускать этот php-fpm на специфическом порту Код (Text): listen = 127.0.0.1:8999 и в директории, в которой мне нужен PHP 5.4.45, передавать запросы туда с помощью .htaccess Код (Text): RewriteEngine On RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$ RewriteCond %2 -f RewriteRule . fcgi://127.0.0.1:8999/%1 [L,P] RewriteOptions Inherit Кто подскажет другие способы?
У меня было так: nginx использует php-fpm v7, а apache за его спиной php-cgi v5. Тому сайту, которому не нужен PHP5, даю конфигурацию без проксирования в апачи. Да, приходится отказаться от htaccess в этом случае и попотеть с рерайтингом в nginx.
Как в Ubuntu 16.04 сделать собранный выше из сорцев php-fpm сервисом: Создать файл nano /lib/systemd/system/php-5.4-fpm.service Содержимое файла Код (Text): [Unit] Description=The PHP 5.4.5 FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/usr/local/php-5.4/var/run/php-fpm.pid ExecStart=/usr/local/php-5.4/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php-5.4/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target systemctl enable php-5.4-fpm.service systemctl daemon-reload Сервис готов к запуску: service php-5.4-fpm start