Wie installiere ich PHP 5.3 unter CentOS?

9

Ich muss PHP 5.3 auf meinem CentOS-Server installieren. In diesem yum install phpFall installiert das Basis-Repository 5.1.6, das für die zu installierenden Anwendungen zu alt ist. Daher habe ich versucht, das IUS- Repository gemäß den offiziellen Anweisungen von IUS zu verwenden:

root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-2.ius.el5.noarch.rpm

root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm

root@linuxbox ~]# rpm -Uvh ius-release*.rpm epel-release*.rpm

OKAY. Jetzt mache ich einfach yum install php53usw. für alles was ich brauche ... aber ich bekomme diesen Fehler:

Running rpm_check_debug
Running Transaction Test
Finished Transaction Test


Transaction Check Error:
  file /usr/bin/php from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
  file /usr/bin/php-cgi from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
  file /usr/share/man/man1/php.1.gz from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
  file /etc/php.ini from install of php53u-common-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-common-5.1.6-27.el5_5.3.x86_64

Error Summary
-------------

Ich habe keine Ahnung, wie ich das lösen soll. Ich denke, ich muss die Basispakete löschen. Als Linux-Neuling weiß ich jedoch nicht, wie ich das machen soll.

fivelitresofsoda
quelle

Antworten:

8

Update : Anscheinend enthält RHEL 5.6 PHP 5.3 , daher wird dies bald für CentOS nativ angezeigt.

file /usr/bin/php from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /usr/bin/php-cgi from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /usr/share/man/man1/php.1.gz from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64
file /etc/php.ini from install of php53u-common-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-common-5.1.6-27.el5_5.3.x86_64

Das Problem hierbei ist, dass die Pakete, die Sie installieren, einen anderen Namen haben (php53 anstelle von php), aber versuchen, dieselben Dateien zu installieren ... daher die Konflikte. Dies ist nicht unbedingt der beste Weg, um die Pakete zusammenzustellen, aber ich weiß nicht, ob es bessere Pakete gibt, also werden wir das ignorieren.

So entfernen Sie Ihre aktuell installierten Pakete:

# yum remove php-cli php-common php

Im Allgemeinen yum remove <list of packages>werden also die Pakete entfernt. Und natürlich, yum list installedum eine Liste der installierten Pakete (oder rpm -qa) anzuzeigen .

Larsks
quelle
hm yeah remove ist vielleicht besser als löschen, da erase auch Abhängigkeiten entfernt. Versuchen Sie zuerst das Entfernen. Wenn dies fehlschlägt, löschen Sie es.
Phil Hollenback
2
removeund erasesind Synonyme, laut der yumManpage unter CentOS und den jüngsten Fedora-Versionen.
Larsks
Vielen Dank! Das hat funktioniert, obwohl ich nicht PHP entfernen musste, sondern die ersten beiden in dieser Liste. Um PHP 5.3 zu installieren, muss ich nur PHP53 installieren, oder? Es sind viele Pakete aufgelistet, aber ich denke, das ist das einzig wichtige, oder?
Fivelitresofsoda
Auf jeden Fall Synonyme. Schauen yumcommands.pySie rein, wenn Sie Zweifel haben. :)
Mattdm
Wahrscheinlich. Nur Sie wissen, ob für Ihre Anwendung eines der zusätzlichen Module erforderlich ist (z. B. XML-Unterstützung, LDAP-Unterstützung, Datenbanken usw.).
Larsks
4

Die Antwort darauf hat sich seit dem 13. Januar 2011 geändert. Red Hat hat Version 5.6 veröffentlicht, einschließlich PHP Version 5.3 als separates Paket ( php53).

Sie müssen das alte PHP entfernen und dann PHP 5.3 separat installieren. Dies klingt ähnlich wie Ihr Paket aus dem IUS-Repository, ist aber jetzt offiziell.

Weitere Informationen finden Sie in den Versionshinweisen zu Red Hat .

Beachten Sie, dass dies nur von Red Hat stammt und es einige Zeit dauern wird, bis dies in CentOS verfügbar ist. Das RHEL 5.6-Update sieht jedoch relativ geringfügig aus, sodass ich nicht erwarten sollte, dass es zu lang ist.

mattdm
quelle
ja. und 4 Monate später. Es ist immer noch nicht in Centos Repos. :(
Stann
Ja. :( lwn.net/Articles/435744
mattdm
Es ist ab April 2011 erhältlich. Puh. Siehe CentOS 5.6
Versionshinweise
2

Versuchen Sie, die alten Versionen der Pakete zu entfernen, bevor Sie die neuen installieren:

yum lösche php-cli php-comon

Dann versuchen Sie es mit Ihrer Installation.

Warnung : Sehen Sie sich die Liste der Änderungen an, die Sie vor dem Festschreiben vornehmen möchten, um sicherzustellen, dass Sie keine anderen wichtigen Pakete entfernen.

Phil Hollenback
quelle
2

Sie sind richtig, Sie müssen zuerst die Standard-PHP-Pakete deinstallieren. Beachten Sie vor dem Fortfahren, dass andere Pakete möglicherweise bestimmte Abhängigkeiten von den Basisversionen aufweisen. Die Chancen stehen gut, dass es Ihnen gut geht, aber seien Sie gewarnt, dass Sie später möglicherweise auf andere Bedenken eingehen müssen.

Sie sollten dies durch Ausstellen tun können

yum erase php-common php-cli

Gefolgt von Ihrem

yum install php53
Scott Pack
quelle
1
  1. Ich hatte zu entfernen php-cli, php-commonund php-devzusammen mit einigen Abhängigkeiten , aber sonst nichts (MySQL, usw. war unberührt.)
  2. Ich habe die gleichen Pakete in der PHP 5.3-Variante mit Abhängigkeiten installiert und jetzt ist alles in Betrieb. phpinfobestätigt, dass ich PHP Version 5.3.3 verwende.
  3. Ich habe Apache neu gestartet und die Site, auf der Joomla ausgeführt wird, funktioniert einwandfrei.
szlevi
quelle
0

Ich hatte das gleiche Problem, bei dem "yum update php" mir Konfliktfehler gab.

Das Ausführen von "yum update" (alles aktualisieren) hat bei mir allerdings funktioniert. Probieren Sie es aus.

Beachten Sie auch, dass beim Ausführen von "yum erase php" oder "yum remove php" möglicherweise alle von PHP abhängigen Pakete entfernt werden ... die wahrscheinlich Ihr Plesk- oder CPanel-Kontrollfeld enthalten würden, wenn Sie dieses installiert haben. Wenn ich mich nicht irre, müssten Sie diese neu installieren, was schmerzhaft sein könnte.

Jason Coleman
quelle
2
Ja, ich habe genau dieses Problem. Um PHP zu aktualisieren, möchte yum Drupal löschen, was eigentlich keine Abhängigkeit ist: Es erfordert PHP, aber es ist egal, welche Version von PHP es ist, da es sich um eine PHP-Quelle und kein kompiliertes Programm handelt. Gibt es eine Möglichkeit, PHP5.2 zu deinstallieren und Drupal in Ruhe zu lassen?
Bart
0

Ich habe dieses Problem gerade nach vielen Recherchen gelöst, nämlich nach der Installation von PHP 5.3.10 unter CentOS 5.3. Ich hatte versucht, mehrere Repositories zu verwenden, einschließlich des Atomicorp-Repos , aber dies brach plesk

Ich fand schließlich, dass die folgenden Schritte ein Vergnügen sind, dachte ich teile.

START

Laden Sie REMI- und EPEL-Repositorys herunter und aktivieren Sie sie

cd ~
wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

vi /etc/yum.repos.d/remi.repo

Ändern Sie "enabled = 0" in "enabled = 1" unter der Überschrift "[remi]"

Sie müssen php-sqlite2 entfernen, sonst wird ein Abhängigkeitsfehler angezeigt

yum remove php-sqlite2

Aktualisieren Sie in diesem Fall PHP auf die neueste Version 5.3.10

yum update php

Sichern Sie die php.ini und aktivieren Sie die neu installierte Version

mv /etc/php.ini /etc/php.ini.old
mv /etc/php.ini.rpmnew /etc/php.ini

Sichern Sie my.cnf und aktivieren Sie die neu installierte Version

mv /etc/my.cnf /etc/my.cnf.old
mv /etc/my.cnf.rpmnew /etc/my.cnf

Installieren Sie die neueste Version der ioncube-Erweiterung

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar -xvf ioncube_loaders_lin_x86-64.tar.gz
mv ioncube/* /usr/lib64/php/modules/

echo 'zend_extension=/usr/lib64/php/modules/ioncube_loader_lin_5.3.so' > /etc/php.d/ioncube-loader.ini

Möglicherweise müssen Sie auch PHP-Erweiterungen installieren. In diesem Fall musste ich auch die SOAP-Erweiterung installieren:

yum install php-soap

Starten Sie die Dienste neu, damit die Änderungen wirksam werden

service mysqld restart
service httpd restart

GETAN

Prost; Kennzeichen

Ponchopilat
quelle