Назад | Перейти на главную страницу

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

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

Обновить: Судя по всему 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).

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

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

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

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

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

yum стереть php-cli php-comon

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

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

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

Вы можете сделать это, выполнив

yum erase php-common php-cli

Следом за вашим

yum install php53

CentOS 6 теперь доступен и включает PHP 5.3:

http://isoredirect.centos.org/centos/6/isos/x86_64/

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

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

Однако запуск "yum update" (обновить все) у меня сработал. Попробуйте.

Также помните, что если вы запустите «yum erase php» или «yum remove php», это может удалить все пакеты, зависящие от PHP... который, вероятно, будет включать вашу панель управления Plesk или CPanel, если она у вас установлена. Если я не ошибаюсь, вам придется переустановить их, что может быть проблемой.

Я только что решил эту проблему после долгих исследований, а именно установки 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

СДЕЛАНО

Ура; отметка