Установка PHP 5.3.29 из источников на Ubuntu 14 с модулем Apache 2

Я успешно установил PHP 5.3.29 на Ubuntu 14 с Apache 2 отдельно.

Я установил PHP со следующим методом:

sudo -i
wget http://in1.php.net/distributions/php-5.3.29.tar.bz2
tar -xvf php-5.3.29.tar.bz2
cd php-5.3.29
./configure
make
make install

Однако PHP и Apache, похоже, не имеют никакой связи. Это означает, что я установил как Apache, так и PHP, но Apache не запускает PHP.

Что я пробовал:

С этого сайта: https://docs.moodle.org/28/en/Compiling_PHP_from_source
"Настройка Apache и PHP", он попросил меня добавить это в файл конфигурации Apache:

LoadModule php5_module modules/libphp5.so

Однако у меня нет модуля libphp5.so.

Некоторые люди просили меня запустить это:

sudo apt-get install libapache2-mod-php5

Но после запуска этой команды он установил для меня PHP 5.5.9, но мне нужен PHP 5.3.29.

Как я могу заставить Apache запускать PHP 5.3.29, который я установил?

Ответ 1

Это работает для меня:

sudo -s

Скачать исходник

mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget -O php-5.3.29.tar.gz http://de1.php.net/get/php-5.3.29.tar.gz/from/this/mirror
tar -xzf php-5.3.29.tar.gz
cd php-5.3.29

Установите все необходимые зависимости

apt-get install apache2 php5 php5-common php5-cli php5-mysql php5-gd php5-mcrypt php5-curl libapache2-mod-php5 php5-xmlrpc mysql-server mysql-client libapache2-mod-fastcgi

apt-get install build-essential php5-dev libbz2-dev libmysqlclient-dev libxpm-dev libmcrypt-dev libcurl4-gnutls-dev libxml2-dev libjpeg-dev libpng12-dev

Скомпилировать PHP

./configure --prefix=/usr/share/php53 --datadir=/usr/share/php53 --mandir=/usr/share/man --bindir=/usr/bin/php53 --includedir=/usr/include/php53 --sysconfdir=/etc/php53/apache2 --with-config-file-path=/etc/php53/apache2 --with-config-file-scan-dir=/etc/php53/conf.d --enable-bcmath --with-curl=shared,/usr --with-mcrypt=shared,/usr --enable-cli --with-gd --with-mysql --with-mysqli --enable-libxml --enable-session --enable-xml --enable-simplexml --enable-filter --enable-inline-optimization --with-jpeg-dir --with-png-dir --with-zlib --with-bz2 --with-curl --enable-exif --enable-soap --with-pic --disable-rpath --disable-static --enable-shared --with-gnu-ld --enable-mbstring
make && make install

Активировать модуль Apache

a2enmod cgi fastcgi actions
service apache2 restart

Создать соответствующий файл конфигурации

vi /etc/apache2/php53.conf

Вставка:

#Include file for virtual hosts that need to run PHP 5.3


SetHandler application/x-httpd-php5

ScriptAlias /php53-cgi /usr/lib/cgi-bin/php53-cgi
Action application/x-httpd-php5 /php53-cgi
AddHandler application/x-httpd-php5 .php

Создайте скрипт среды для запуска дополнительной версии PHP

vi /usr/lib/cgi-bin/php53-cgi

Вставка:

#!/bin/sh
PHPRC="/etc/php53/apache2/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php53/php-cgi

Настройте виртуальные хосты Apache 2

Include php53.conf
ServerName example.org
DocumentRoot /var/www/sites/example.org

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted

Наконец, перезагрузите...

service apache2 restart

Источник: https://erdfisch.de/en/multiple-versions-php-apache-under-linux

Ответ 2

Ответ Wittich сказочный! Я использовал его для замены php 5.1 на php 5.6 на моем веб-сайте unix. В отличие от Виттиха, я не пытался запускать две версии одновременно; Я просто пытался выполнить обновление с более старой версии php, которая была интегрирована с apache в более новую версию, которая запускалась бы из cgi.

По какой-то причине несколько команд Wittich (например, команда SetHandler) помешали загрузке Apache после того, как я их попробовал. В итоге мне пришлось упростить его ответ, чтобы Apache работал правильно. Я сделал 6 изменений в процедурах Виттиха:

  • Я использовал yum вместо apt-get, потому что apt-get не запускался в моей системе Unix.

  • Поскольку я устанавливал php 5.6, а не php 5.3, я изменил все экземпляры "php53" на "php56" в переключателях команды configure. Это не было необходимо для того, чтобы все работало, но это поможет вам понять мои пути ниже:

  • В одной из моих конфигурационных папок httpd (/etc/httpd/conf.d) я нашел файл, который уже настроен для реализации cgi php (php_cgi.conf). Его содержание:

scriptAlias ​​/phppath/ "/var/www/cgi-bin/cgi_wrapper/"
  Действие php- script/phppath/cgi_wrapper

Содержимое и наличие этого файла позволяют мне пропустить или изменить несколько шагов Wittich. Я также не создал php53-cgi, и не создал php53.conf.

  1. Вместо создания php53-cgi я заменил содержимое существующего файла (/var/www/cgi-bin/cgi-wrapper/cgi-wrapper) на содержимое, предлагаемое для php53-cgi. Из-за других строк, которые предотвращают правильную перезагрузку apache, я попал в содержимое этого файла, просто являясь его первой и последней строками (без косой черты перед знаком числа):
\ #!/Bin/ш
  exec/usr/bin/php56/php-cgi
  1. Вместо создания php53.conf я заменил одну команду в файле php.conf(/etc/httpd/conf.d/php.conf). Я изменил add-обработчик для команды php, чтобы теперь он читал:
AddHandler php- script.php
  1. Я вообще не изменял файлы httpd.conf, поскольку моя цель состояла в том, чтобы заменить старый php, а не создавать разные версии php, которые будут запускаться на разных виртуальных хостах. Тем не менее, я считаю, что я мог бы настроить свои веб-сайты для запуска старой версии и новой в разных каталогах, просто изменив файл httpd.conf, чтобы старый AddHandler появлялся в некоторых каталогах, в то время как новый AddHandler появлялся в других,

Итак, в целом, легко преобразовать Wittich-ответ в способ обновления с более старой версии php на основе apache до более новой версии cgi, если у вас есть существующий файл php_cgi.conf, который вы можете захватить и использовать как Руководство.

Я нашел публикацию Дэвида Брогдона для хорошего ответа на вопрос Wittich для тех, кто не знаком с настройками, make и make install:

http://www.onlamp.com/pub/a/php/2000/11/17/php_admin.html

Я часами искал Интернет и никогда не нашел ничего полезного, как сообщение Броддона и ответ Виттиха. Ответ Wittich, должно быть, отлично работал в его системе Unix, но мне пришлось немного изменить его, чтобы заставить его работать на моем.

Ответ 3

Это работает для меня на пустом месте Ubuntu 14.04:

Ручная установка

Обновите системные пакеты

  1. apt-get update

  2. apt-get upgrade -y

Установите зависимости и подготовьте среду

  1. apt-get install -y build-essential libxml2-dev apache2 apache2-dev

  2. echo "export PATH=/usr/local/bin: /usr/local/sbin:$PATH" >> ~/.bashrc

  3. apt-get install -y libapache2-mod-php5 --no-install-recommends

Скачать PHP 5.3.29

  1. apt-get install -y wget && cd/tmp && wget http://php.net/distributions/php-5.3.29.tar.bz2

Разархивируйте и настройте модуль apache apxs2

  1. tar -xvf php-5.3.29.tar.bz2 && cd php-5.3.29 &&./configure --with-apxs2=/usr/bin/apxs2

Установить его

  1. make && make install

Проверьте, работает ли

  1. service apache2 restart && php -v

Виа Докер

docker pull fabriciohp/php-5.3.29

Ответ 4

Я делаю это:

# wget wget http://in1.php.net/distributions/php-5.3.29.tar.bz2
# tar -xvf php-5.3.29.tar.bz2
# cd php-5.3.29
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
# make
# sudo make install
# sudo cp php.ini-development /usr/local/lib/php.ini.

Затем измените php.ini. Измените параметр,

short_open_tag = Off

к

short_open_tag = On

Проверить и изменить модуль httpd.conf php5:

LoadModule php5_module modules/libphp5.so

Добавить в httpd.conf:

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Перезапустить apache2, установить по умолчанию:/usr/local/apache2

# sudo /usr/local/apache2/bin/apachectl start

Проверить, что phpinfo теперь читается в вашей установке Apache, например:

http://localhost