Мне нужно установить 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:
php-cli
, php-common
и php-dev
вместе с некоторыми зависимостями, но ничего больше (MySQL и т. д. остались нетронутыми).phpinfo
подтверждает, что я использую PHP версии 5.3.3.У меня была такая же проблема, когда "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
СДЕЛАНО
Ура; отметка