it-swarm.com.de

Installieren PHP 5.3.29 aus Quellen auf Ubuntu 14 mit Apache 2-Modul

Ich habe PHP 5.3.29 erfolgreich auf Ubuntu 14 mit Apache 2 installiert.

Ich habe PHP mit der folgenden Methode installiert:

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 und Apache scheinen jedoch keine Verknüpfung zu haben. Das heißt, ich habe sowohl Apache als auch PHP installiert, aber Apache führt kein PHP aus.

Was ich versucht habe:

Von dieser Seite: https://docs.moodle.org/28/de/Compiling_PHP_from_source
"Apache und PHP konfigurieren", hat mich gebeten, dies in die Apache-Konfigurationsdatei einzufügen:

LoadModule php5_module modules/libphp5.so

Ich habe jedoch kein "libphp5.so" -Modul.

Einige Leute baten mich, dies auszuführen:

Sudo apt-get install libapache2-mod-php5

Nach dem Ausführen des Befehls wurde jedoch PHP 5.5.9 für mich installiert, aber ich brauche PHP 5.3.29.

Wie kann ich Apache dazu bringen, PHP 5.3.29 auszuführen, das ich installiert habe?

12
dondonhk

Das funktioniert für mich:

Sudo -s

Quelle herunterladen

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

Installieren Sie alle erforderlichen Abhängigkeiten

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 kompilieren

./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-Modul aktivieren

a2enmod cgi fastcgi actions
service Apache2 restart

Erstellen Sie die entsprechende Konfigurationsdatei

vi /etc/Apache2/php53.conf

Einfügen:

#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

Umgebungsskript erstellen, um die zusätzliche PHP Version zu starten

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

Einfügen:

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

Virtuelle Hosts von Apache 2 konfigurieren

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

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted

Zuletzt neu starten ...

service Apache2 restart

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

11
wittich

Wittichs Antwort ist fabelhaft! Ich habe es benutzt, um PHP 5.1 auf meiner Unix-Website durch PHP 5.6 zu ersetzen. Im Gegensatz zu Wittich habe ich nicht versucht, zwei Versionen gleichzeitig auszuführen; Ich habe einfach versucht, ein Upgrade von einer älteren, in Apache integrierten Version von PHP auf eine neuere Version durchzuführen, die von CGI ausgeführt wird. 

Aus irgendeinem Grund verhinderten einige von Wittichs Befehlen (wie der SetHandler-Befehl), dass Apache geladen wurde, nachdem ich sie ausprobiert hatte. Am Ende musste ich seine Antwort vereinfachen, damit Apache korrekt läuft. Ich habe 6 Änderungen in Wittichs Verfahren vorgenommen:

  1. Ich habe yum anstelle von apt-get verwendet, da apt-get auf meinem Unix-System nicht ausgeführt werden konnte.

  2. Da ich PHP 5.6 nicht PHP 5.3 installierte, änderte ich alle Instanzen von "php53" in "php56" in den Befehlszeilen des configure-Befehls. Dies war nicht notwendig, damit alles funktioniert, aber es wird Ihnen helfen, meine Pfade zu verstehen:

  3. In einem meiner httpd-Konfigurationsordner (/etc/httpd/conf.d) fand ich eine Datei, die bereits für eine CGI-Implementierung von php (php_cgi.conf) eingerichtet wurde. Sein Inhalt war:

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

Aufgrund des Inhalts und der Existenz dieser Datei konnte ich einige Schritte von Wittich überspringen oder ändern. Ich habe weder php53-cgi erstellt noch php53.conf erstellt.

  1. Anstatt php53-cgi zu erstellen, habe ich den Inhalt der vorhandenen Datei (/ var/www/cgi-bin/cgi-wrapper/cgi-wrapper) durch die für php53-cgi vorgeschlagenen Inhalte ersetzt. Aufgrund der anderen Zeilen, die Apache am Neustart hindern, war der Inhalt dieser Datei nur seine erste und letzte Zeile (ohne den Schrägstrich vor dem Nummernzeichen):
\#!/bin/sh
exec /usr/bin/php56/php-cgi
  1. Anstatt php53.conf zu erstellen, habe ich einen einzelnen Befehl in der Datei php.conf (/etc/httpd/conf.d/php.conf) ersetzt. Ich habe den Befehl add-handler für den Befehl php so geändert, dass er jetzt lautet:
AddHandler PHP-Skript .php
  1. Ich habe die httpd.conf -Dateien überhaupt nicht geändert, da mein Ziel einfach darin bestand, die alte PHP-Datei zu ersetzen, anstatt verschiedene PHP-Versionen zu erstellen, die auf verschiedenen virtuellen Hosts laufen würden. Ich glaube jedoch, dass ich meine Websites so einrichten konnte, dass die alte und die neue Version in verschiedenen Verzeichnissen ausgeführt werden. Dazu muss einfach die Datei httpd.conf so geändert werden, dass der old AddHandler in einigen Verzeichnissen erscheint, während der new AddHandler würde in anderen erscheinen. 

Zusammenfassend ist es daher einfach, Wittichs Antwort in eine Möglichkeit zu konvertieren, ein Upgrade von einer älteren Apache-basierten PHP-Version auf eine neuere Cgi-basierte Version durchzuführen, wenn Sie über eine vorhandene php_cgi.conf -Datei verfügen, die Sie als Anleitung verwenden können. 

Ich habe herausgefunden, dass ein Beitrag von David Brogdon eine gute Ergänzung zu Wittichs Antwort für diejenigen ist, die sich mit den Befehlen zum Konfigurieren, Erstellen und Installieren befassen:

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

Ich suchte stundenlang im Internet und fand nie etwas so hilfreiches wie Brogdons Post und Wittichs Antwort. Wittichs Antwort muss auf seinem Unix-System einwandfrei funktioniert haben, aber ich musste sie ein wenig ändern, damit sie auf meinem Unix-System funktioniert. 

0
Howard Richman

Das funktioniert bei mir auf einem Kratzer Ubuntu 14.04:

Manuelle Installation

Aktualisieren Sie die Systempakete

  1. apt-get update

  2. apt-get upgrade -y

Installieren Sie die Abhängigkeiten und bereiten Sie die Umgebung vor

  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

Laden Sie PHP 5.3.29 herunter

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

Entpacken und konfigurieren Sie das Apache-Modul apxs2

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

Es installieren

  1. make && make install

Prüfen Sie, ob es funktioniert

  1. service Apache2 restart && php -v

Über Docker

docker pull fabriciohp/php-5.3.29

0
Fabricio