Jak zainstalować PHP 5.3 na CentOS?

9

Muszę zainstalować PHP 5.3 na moim serwerze CentOS. Jeśli to zrobię yum install php, podstawowe repozytorium instaluje 5.1.6, które jest za stare dla aplikacji, które muszę zainstalować. Próbowałem więc użyć repozytorium IUS , postępując zgodnie z oficjalnymi instrukcjami IUS:

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

OK. Teraz po prostu robię yum install php53itd. Dla wszystkich potrzebuję ... ale pojawia się ten błąd:

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
-------------

Nie mam pojęcia, jak to rozwiązać. Myślę, że muszę usunąć pakiety podstawowe. Jednak jako ktoś nowy w Linuksie nie wiem, jak to zrobić.

fivelitresofsoda
źródło

Odpowiedzi:

8

Aktualizacja : Najwyraźniej RHEL 5.6 zawiera PHP 5.3 , więc wkrótce pojawi się natywnie dla CentOS.

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

Problem polega na tym, że instalowane pakiety mają inną nazwę (php53 zamiast php), ale próbują zainstalować te same pliki ... stąd konflikty. To niekoniecznie najlepszy sposób na połączenie pakietów, ale nie wiem, czy są dostępne lepsze pakiety, więc zignorujemy to.

Aby usunąć aktualnie zainstalowane pakiety:

# yum remove php-cli php-common php

Ogólnie rzecz biorąc, yum remove <list of packages>usunie pakiety. I oczywiście, yum list installedaby zobaczyć listę zainstalowanych pakietów (lub rpm -qa).

Larsks
źródło
hm tak, usunięcie może być lepsze niż usuwanie, ponieważ usuwanie usuwa również zależności. Spróbuj usunąć najpierw, jeśli to się nie powiedzie, spróbuj usunąć.
Phil Hollenback,
2
removei erasesą synonimami, zgodnie ze yumstroną podręcznika pod CentOS i ostatnimi wydaniami Fedory.
larsks
Dzięki! To działało, chociaż nie musiałem usuwać php, ale pierwsze dwa z tej listy. Aby zainstalować php 5.3, muszę tylko zainstalować php53, prawda? Na liście znajduje się wiele pakietów, ale myślę, że to jedyna ważna prawda?
fivelitresofsoda
Zdecydowanie synonimy. Zajrzyj, yumcommands.pyjeśli masz wątpliwości. :)
mattdm
Prawdopodobnie. Tylko Ty będziesz wiedział, czy twoja aplikacja wymaga któregokolwiek z dodatkowych modułów (np. Obsługa xml, obsługa ldap, baz danych itp.).
larsks
4

Odpowiedź na to pytanie uległa zmianie od 13 stycznia 2011 r. Red Hat wydał wersję 5.6, w tym PHP w wersji 5.3 jako oddzielny pakiet ( php53).

Musisz usunąć stary PHP, a następnie osobno zainstalować PHP 5.3. To brzmi podobnie do twojego pakietu z repozytorium IUS, ale teraz jest oficjalne.

Aby uzyskać więcej informacji, zobacz informacje o wersji Red Hat .

Zauważ, że jest to po prostu Red Hat i będzie trochę opóźnienie, zanim będzie dostępne w CentOS. Aktualizacja RHEL 5.6 wygląda jednak na stosunkowo niewielką, więc nie powinienem oczekiwać, że będzie za długa.

mattdm
źródło
tak. i 4 miesiące później. wciąż nie ma go w repozytoriach Centos. :(
Stann
Tak. :( lwn.net/Articles/435744
mattdm
Jest dostępny od kwietnia 2011 roku. Zobacz Informacje o wydaniu CentOS 5.6
Stefan Lasiewski,
2

Spróbuj usunąć stare wersje pakietów przed zainstalowaniem nowych:

mniam usuń php-cli php-comon

następnie spróbuj zainstalować mniam.

Ostrzeżenie : spójrz na listę zmian, które chcesz wprowadzić przed zatwierdzeniem, aby upewnić się, że nie usuwasz innych ważnych pakietów.

Phil Hollenback
źródło
2

Masz rację, najpierw musisz odinstalować domyślne pakiety php. Zanim przejdziesz dalej, pamiętaj, że inne pakiety mogą mieć specyficzne zależności od wersji podstawowych. Możliwe, że nic ci nie będzie, ale ostrzegaj, że później będziesz musiał zająć się innymi problemami.

Powinieneś być w stanie to zrobić, wydając

yum erase php-common php-cli

Następuje twój

yum install php53
Scott Pack
źródło
1
  1. Musiałem usunąć php-cli, php-commona php-devwraz z pewnymi zależnościami ale nic więcej (MySQL, itp były nietknięte.)
  2. Zainstalowałem te same pakiety w smaku PHP 5.3 z zależnościami i teraz wszystko działa. phpinfopotwierdza, że ​​korzystam z PHP w wersji 5.3.3.
  3. Zrestartowałem Apache, a strona, na której działa Joomla, działa dobrze.
szlevi
źródło
0

Miałem ten sam problem, w którym „yum update php” dawał mi błędy konfliktu.

Uruchamianie „aktualizacji yum” (aktualizacja wszystkiego) działało jednak dla mnie. Spróbuj.

Pamiętaj również, że jeśli uruchomisz „yum erase php” lub „yum remove php”, może usunąć wszystkie pakiety zależne od PHP ... które prawdopodobnie obejmowałyby twój panel sterowania Plesk lub CPanel, jeśli masz zainstalowany. Jeśli się nie mylę, będziesz musiał ponownie zainstalować te, co może być uciążliwe.

Jason Coleman
źródło
2
Tak, mam dokładnie ten problem. Aby zaktualizować PHP, yum chce usunąć Drupala, co tak naprawdę nie jest zależnością: wymaga PHP do działania, ale nie obchodzi go, która wersja PHP, ponieważ jest to źródło PHP, a nie skompilowany program. Czy jest jakiś sposób na odinstalowanie PHP5.2 i pozostawienie Drupala w spokoju?
bart
0

Właśnie rozwiązałem ten problem po wielu badaniach, a mianowicie zainstalowaniu PHP 5.3.10 na CentOS 5.3. Próbowałem użyć kilku repozytoriów, w tym repozytorium Atomicorp , ale to złamało plesk

W końcu odkryłem, że poniższe kroki są przyjemnością, pomyślałem, że się nimi dzielę.

ZACZYNAĆ

Pobierz i włącz repozytoria REMI i EPEL

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

Zmień „włączone = 0” na „włączone = 1” pod nagłówkiem „[rem]”

Musisz usunąć php-sqlite2, inaczej pojawi się błąd zależności

yum remove php-sqlite2

W takim przypadku zaktualizuj PHP do najnowszej wersji 5.3.10

yum update php

Utwórz kopię zapasową php.ini i włącz nowo zainstalowaną wersję

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

Utwórz kopię zapasową my.cnf i włącz nowo zainstalowaną wersję

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

Zainstaluj najnowszą wersję rozszerzenia ioncube

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

Może być również konieczne zainstalowanie rozszerzeń php, w tym przypadku musiałem również zainstalować rozszerzenie SOAP:

yum install php-soap

Uruchom ponownie usługi, aby zmiany zaczęły obowiązywać

service mysqld restart
service httpd restart

GOTOWY

Twoje zdrowie; znak

ponchopilate
źródło