web-dev-qa-db-fra.com

L'installation PHP 5.3.29 à partir de sources sur Ubuntu 14 avec Apache 2 Module

J'ai installé avec succès PHP 5.3.29 sur Ubuntu 14 avec Apache 2 séparément.

J'ai installé PHP avec la méthode suivante:

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

Cependant, PHP et Apache ne semblent pas avoir de lien. Cela signifie que j'ai installé Apache et PHP, mais Apache n'exécute pas PHP.

Ce que j'ai essayé:

Depuis ce site: https://docs.moodle.org/28/fr/Compiling_PHP_from_source
"Configurer Apache et PHP", il m'a demandé d'ajouter ceci dans le fichier de configuration Apache:

LoadModule php5_module modules/libphp5.so

Cependant, je n'ai pas le module "libphp5.so".

Certaines personnes m'ont demandé de lancer ceci:

Sudo apt-get install libapache2-mod-php5

Mais après avoir exécuté la commande, il a installé PHP 5.5.9 pour moi, mais il me faut PHP 5.3.29.

Comment puis-je faire exécuter Apache PHP 5.3.29 que j'ai installé?

12
dondonhk

Cela fonctionne pour moi:

Sudo -s

Source de téléchargement

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

Installer toutes les dépendances nécessaires

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

Compiler 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

Activer le module Apache

a2enmod cgi fastcgi actions
service Apache2 restart

Créer le fichier de configuration correspondant

vi /etc/Apache2/php53.conf

Insérer:

#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

Créer un script d'environnement pour démarrer la version supplémentaire PHP

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

Insérer:

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

Configurer les hôtes virtuels d'Apache 2

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

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted

Enfin, redémarrez ...

service Apache2 restart

Source: https://erdfisch.de/en/multiple-versions-php-Apache-under-linux

11
wittich

La réponse de Wittich est fabuleuse! Je l'ai utilisé afin de remplacer php 5.1 par php 5.6 sur mon site web unix. Contrairement à Wittich, je n'essayais pas de faire fonctionner deux versions simultanément; J'essayais simplement de faire une mise à niveau d'une ancienne version de php intégrée à Apache vers une version plus récente exécutée à partir de cgi. 

Pour une raison quelconque, plusieurs commandes de Wittich (telles que la commande SetHandler) ont empêché Apache de se charger après que je les ai essayées. J'ai fini par avoir à simplifier sa réponse pour qu'Apache s'exécute correctement. J'ai apporté 6 modifications aux procédures de Wittich:

  1. J'ai utilisé yum au lieu d'apt-get car apt-get ne fonctionnerait pas sur mon système Unix.

  2. Depuis que j'installais php 5.6 et non pas php 5.3, j'ai changé toutes les instances de "php53" en "php56" dans les commutateurs de la commande configure. Ce n'était pas nécessaire pour que tout fonctionne, mais cela vous aidera à comprendre mes chemins ci-dessous:

  3. Dans l'un de mes dossiers de configuration httpd (/etc/httpd/conf.d), j'ai trouvé un fichier qui était déjà configuré pour une implémentation php de php (php_cgi.conf). Son contenu était:

scriptAlias ​​/ phppath/"/ var/www/cgi-bin/cgi_wrapper /"
Action php-script /phppath/cgi_wrapper

Le contenu et l'existence de ce fichier me permettent d'ignorer ou de modifier plusieurs étapes de Wittich. Je n'ai ni créé php53-cgi, ni php53.conf.

  1. Au lieu de créer php53-cgi, j'ai remplacé le contenu du fichier existant (/ var/www/cgi-bin/cgi-wrapper/cgi-wrapper) par le contenu suggéré pour php53-cgi. En raison des autres lignes empêchant Apache de redémarrer correctement, je me suis retrouvé avec le contenu de ce fichier juste ses premières et dernières lignes (sans la barre oblique avant le signe du nombre):
\#!/bin/sh
exec /usr/bin/php56/php-cgi
  1. Au lieu de créer php53.conf, j'ai remplacé une seule commande dans le fichier php.conf (/etc/httpd/conf.d/php.conf). J'ai changé le gestionnaire d'ajout pour php afin qu'il se lise maintenant:
AddHandler php-script .php
  1. Je n'ai pas du tout changé les fichiers httpd.conf car mon objectif était simplement de remplacer l'ancien php, et non de créer différentes versions de php pouvant être exécutées sur différents hôtes virtuels. Cependant, je pense que j'aurais pu configurer mes sites Web pour qu'ils utilisent l'ancienne version et la nouvelle dans des répertoires différents, simplement en modifiant le fichier httpd.conf afin que le old AddHandler apparaisse dans certains répertoires, tandis que le new AddHandler apparaîtrait dans d'autres. 

En résumé, il est donc facile de convertir la réponse de Wittich en un moyen de mettre à niveau une version plus ancienne de PHP basée sur Apache vers une version plus récente basée sur cgi si vous disposez d'un fichier php_cgi.conf existant que vous pouvez détourner et utiliser comme guide. 

J'ai trouvé une publication de David Brogdon être un bon complément à la réponse de Wittich pour ceux qui débutent dans les commandes configure, make et make install:

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

J'ai cherché Internet pendant des heures et je n'ai jamais rien trouvé d'aussi utile que le message de Brogdon et la réponse de Wittich. La réponse de Wittich a dû fonctionner parfaitement sur son système Unix, mais je devais le modifier un peu pour le faire fonctionner sur le mien. 

0
Howard Richman

Cela fonctionne pour moi sur un scratch Ubuntu 14.04:

Installation manuelle

Mettre à jour les packages systèmes

  1. apt-get update

  2. apt-get upgrade -y

Installer les dépendances et préparer l'environnement

  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

Télécharger PHP 5.3.29

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

Décompressez et configurez le module Apache apxs2

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

Installez-le

  1. make && make install

Vérifiez si fonctionne

  1. service Apache2 restart && php -v

Via Docker

docker pull fabriciohp/php-5.3.29

0
Fabricio