Установка 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.
- Вместо создания php53-cgi я заменил содержимое существующего файла (/var/www/cgi-bin/cgi-wrapper/cgi-wrapper) на содержимое, предлагаемое для php53-cgi. Из-за других строк, которые предотвращают правильную перезагрузку apache, я попал в содержимое этого файла, просто являясь его первой и последней строками (без косой черты перед знаком числа):
\ #!/Bin/ш
exec/usr/bin/php56/php-cgi
- Вместо создания php53.conf я заменил одну команду в файле php.conf(/etc/httpd/conf.d/php.conf). Я изменил add-обработчик для команды php, чтобы теперь он читал:
AddHandler php- script.php
- Я вообще не изменял файлы 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:
Ручная установка
Обновите системные пакеты
-
apt-get update
-
apt-get upgrade -y
Установите зависимости и подготовьте среду
-
apt-get install -y build-essential libxml2-dev apache2 apache2-dev
-
echo "export PATH=/usr/local/bin: /usr/local/sbin:$PATH" >> ~/.bashrc
-
apt-get install -y libapache2-mod-php5 --no-install-recommends
Скачать PHP 5.3.29
-
apt-get install -y wget && cd/tmp && wget http://php.net/distributions/php-5.3.29.tar.bz2
Разархивируйте и настройте модуль apache apxs2
-
tar -xvf php-5.3.29.tar.bz2 && cd php-5.3.29 &&./configure --with-apxs2=/usr/bin/apxs2
Установить его
-
make && make install
Проверьте, работает ли
-
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