Как мне установить PHP 5.3 на CentOS?

9

Я должен установить PHP 5.3 на моем сервере CentOS. Если я это сделаю yum install php, базовый репозиторий установит 5.1.6, который слишком стар для приложений, которые мне нужно установить. Поэтому я пытался использовать хранилище IUS , следуя официальным инструкциям 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

ХОРОШО. Теперь я просто делаю yum install php53и т. Д. Для всего, что мне нужно ... но я получаю эту ошибку:

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

Я понятия не имею, как это решить. Я думаю, что я должен удалить базовые пакеты. Однако, как кто-то новичок в Linux, я не знаю, как это сделать.

fivelitresofsoda
источник

Ответы:

8

Обновление : по-видимому, RHEL 5.6 включает PHP 5.3 , поэтому скоро он будет отображаться для 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

Проблема здесь в том, что устанавливаемые вами пакеты имеют другое имя (php53 вместо php), но они пытаются установить те же файлы ... отсюда и конфликты. Это не обязательно лучший способ собрать пакеты, но я не знаю, есть ли лучшие пакеты, доступные, поэтому мы проигнорируем это.

Чтобы удалить установленные в данный момент пакеты:

# yum remove php-cli php-common php

Так что, в общем, yum remove <list of packages>буду удалять пакеты. И конечно же, yum list installedчтобы увидеть список установленных пакетов (или rpm -qa).

larsks
источник
хм, да, удалить может быть лучше, чем стереть, так как стереть также удаляет зависимости. Попробуйте сначала удалить, если это не удается, попробуйте стереть.
Фил Холленбек
2
removeи eraseявляются синонимами, согласно yumman-странице в CentOS и последних выпусках Fedora.
Жаворонки
Спасибо! Это сработало, хотя мне не нужно было удалять php, но первые два в этом списке. Чтобы установить php 5.3, мне нужно только установить php53 правильно? Есть много пакетов в списке, но я думаю, что это единственный важный, верно?
Fivelitresofsoda
Определенно синонимы. Загляни, yumcommands.pyесли сомневаешься. :)
mattdm
Вероятно. Только вы знаете, требует ли ваше приложение каких-либо дополнительных модулей (например, поддержка xml, поддержка ldap, базы данных и т. Д.).
Жаворонки
4

Ответ на этот вопрос изменился с 13 января 2011 года. Red Hat выпустила версию 5.6, включая PHP версии 5.3 в виде отдельного пакета ( php53).

Вы должны удалить старый PHP, а затем установить PHP 5.3 отдельно. Это похоже на ваш пакет из репозитория IUS, но теперь он официальный.

Для получения дополнительной информации см. Примечания к выпуску Red Hat .

Обратите внимание, что это только что из Red Hat, и будет немного задержки, прежде чем это станет доступно в CentOS. Обновление RHEL 5.6 выглядит относительно незначительным, поэтому не стоит ожидать, что оно будет слишком длинным.

mattdm
источник
Ага. и 4 месяца спустя. это все еще не в репозиториях Centos. :(
Stann
Да. :( lwn.net/Articles/435744
mattdm
Он доступен с апреля 2011 года. См. Примечания к выпуску CentOS 5.6
Стефан Ласевский
2

Попробуйте удалить старые версии пакетов перед установкой новых:

ням стереть php-cli php-comon

затем попробуйте установить Yum.

Предупреждение : посмотрите список изменений, которые yum хочет внести перед фиксацией, чтобы убедиться, что вы не удаляете другие важные пакеты.

Фил Холленбек
источник
2

Вы правы, вам нужно сначала удалить пакеты php по умолчанию. Прежде чем идти вперед, имейте в виду, что другие пакеты могут иметь определенные зависимости от базовых версий. Скорее всего, у вас все будет хорошо, но просто предупредите, что вам, возможно, потребуется решить другие проблемы позже.

Вы должны быть в состоянии сделать это, выпуская

yum erase php-common php-cli

Вслед за вашим

yum install php53
Скотт Пак
источник
1
  1. Мне пришлось удалить php-cli, php-commonи php-devвместе с некоторыми зависимостями, но ничего больше (MySQL и т. Д. Не были затронуты.)
  2. Я установил те же пакеты в версии PHP 5.3 с зависимостями, и теперь все работает. phpinfoподтверждает, что я использую PHP версии 5.3.3.
  3. Я перезапустил Apache и сайт, на котором работает Joomla, просто отлично работает.
szlevi
источник
0

У меня была та же проблема, когда "yum update php" приводил к конфликтным ошибкам.

Запуск "yum update" (обновить все) работал для меня, хотя. Дайте это попробовать.

Кроме того, помните, что если вы запустите "yum erase php" или "yum remove php", он может удалить все пакеты, которые зависят от PHP ... которые могут включать вашу панель управления Plesk или CPanel, если она у вас установлена. Если я не ошибаюсь, вам придется переустановить те, которые могут быть болезненными.

Джейсон Колман
источник
2
Да, у меня есть именно эта проблема. Чтобы обновить PHP, yum хочет удалить Drupal, который на самом деле не является зависимостью: ему нужен PHP для работы, но ему совершенно не важно, какая версия PHP, так как это исходный код PHP, а не скомпилированная программа. Есть ли способ удалить PHP5.2 и оставить его в покое?
Барт
0

Я только что решил эту проблему после долгих исследований, а именно установки PHP 5.3.10 на CentOS 5.3. Я пытался использовать несколько репозиториев, включая репозиторий Atomicorp , но это сломало Plesk

Я наконец нашел следующие шаги работает удовольствие, думал, что я разделяю.

НАЧАТЬ

Загрузите и включите репозитории REMI и 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

Измените "enabled = 0" на "enabled = 1" под заголовком "[remi]"

Вы должны удалить php-sqlite2, иначе вы получите ошибку зависимости

yum remove php-sqlite2

Обновите PHP до последней версии 5.3.10 в этом случае

yum update php

Сделайте резервную копию php.ini и включите вновь установленную версию

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

Сделайте резервную копию my.cnf и включите только что установленную версию

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

Установите последнюю версию расширения 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

Вам также может понадобиться установить расширения php, в этом случае мне также нужно было установить расширение SOAP:

yum install php-soap

Перезапустите службы, чтобы изменения вступили в силу

service mysqld restart
service httpd restart

СДЕЛАННЫЙ

Приветствия; отметка

ponchopilate
источник