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

CentOS - Попытка понизить версию PHP

Мне нужно понизить версию PHP 5.3 до 5.2, и я нахожусь на машине CentOS 5.5 x86_64 с Apache 2.2.3 и MySQL 5.1.54. У меня были некоторые проблемы, и теперь я просто заблудился ... Не уверен, что именно включать с точки зрения шагов / еще много чего, поэтому я просто попытаюсь сломать то, что я сделал, что привело меня к моей критической точке ... .

Вот шаги, которые я сделал до сих пор:

(1) Я попытался удалить PHP 5.3 с помощью:

rpm -e --nodeps php-devel php php-cli php-common php-mcrypt php-mysql 
php-pdo php-ldap php-mbstring php-xml php-xmlrpc php-odbc php-imap 
php-snmp php-gd

//Yielded:
warning: /etc/php.ini saved as /etc/php.ini.rpmsave

(2) Затем я попытался установить php:

yum install php-devel php php-cli php-common php-mcrypt php-mysql php-pdo php-ldap php-mbstring php-xml php-xmlrpc php-odbc php-imap php-snmp php-gd

Но, по глупости, я понял (позже), что не указал репо или версию php. К счастью (?), Ничего не было установлено, потому что это дало следующее:

Transaction Check Error:
  package libmcrypt-2.5.8-4.el5.centos.x86_64 (which is newer than libmcrypt-2.5.7-5.el5.i386) is already installed

(3) Хотя сначала я этого не заметил, поэтому перезапустил apache и запустил: yum upgrade

Которая все нормально пробежала.

(4) Отредактировал /etc/my.cnf, чтобы поместить туда skip-bdb и запустить mysqld.

(5) Ран: mysql_upgrade -uadmin -pкошка / etc / psa / .psa.shadow`

(6) После попытки найти решение в Google я наткнулся на статью, в которой говорилось, что мне нужен yum-allowdowngrade, поэтому я запустил следующее: yum install yum-allowdowngrade

(7) Чтобы убедиться, что у меня не установлен php, я выполнил: yum remove php

что дало:

Loaded plugins: allowdowngrade, fastestmirror
Setting up Remove Process
No Match for argument: php
Loading mirror speeds from cached hostfile
 * atomic: www6.atomicorp.com
 * base: mirror.rackspace.com
 * epel: mirror.cogentco.com
 * extras: mirror.ash.fastserv.com
 * updates: mirror.ash.fastserv.com
atomic                                                                                        | 1.9 kB     00:00     
base                                                                                          | 2.1 kB     00:00     
epel                                                                                          | 3.7 kB     00:00     
extras                                                                                        | 2.1 kB     00:00     
rusia-repo                                                                                    |  951 B     00:00     
updates                                                                                       | 1.9 kB     00:00     
Package(s) php available, but not installed.
No Packages marked for removal

(8) Затем я побежал:

yum --allow-downgrade --enablerepo=rusia-repo install php-devel-5.2.17-1.el5.x86_64 php-5.2.17-1.el5.x86_64 php-cli-5.2.17-1.el5.x86_64 php-common-5.2.17-1.el5.x86_64 php-mcrypt-5.2.17-1.el5.x86_64 php-mysql-5.2.17-1.el5.x86_64 php-pdo-5.2.17-1.el5.x86_64 php-ldap-5.2.17-1.el5.x86_64 php-mbstring-5.2.17-1.el5.x86_64 php-xml-5.2.17-1.el5.x86_64 php-xmlrpc-5.2.17-1.el5.x86_64 php-odbc-5.2.17-1.el5.x86_64 php-imap-5.2.17-1.el5.x86_64 php-snmp-5.2.17-1.el5.x86_64 php-gd-5.2.17-1.el5.x86_64 

что дало:

Loaded plugins: allowdowngrade, fastestmirror
Loading mirror speeds from cached hostfile
 * atomic: www6.atomicorp.com
 * base: mirror.rackspace.com
 * epel: mirror.cogentco.com
 * extras: mirror.ash.fastserv.com
 * updates: mirror.ash.fastserv.com
atomic                                                                                        | 1.9 kB     00:00     
base                                                                                          | 2.1 kB     00:00     
epel                                                                                          | 3.7 kB     00:00     
extras                                                                                        | 2.1 kB     00:00     
rusia-repo                                                                                    |  951 B     00:00     
updates                                                                                       | 1.9 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.2.17-1.el5 set to be updated
--> Processing Dependency: php-common = 5.2.17-1.el5 for package: php
--> Processing Dependency: php-cli = 5.2.17-1.el5 for package: php
--> Finished Dependency Resolution
php-5.2.17-1.el5.x86_64 from rusia-repo has depsolving problems
  --> Missing Dependency: php-common = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
php-5.2.17-1.el5.x86_64 from rusia-repo has depsolving problems
  --> Missing Dependency: php-cli = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
Error: Missing Dependency: php-common = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
Error: Missing Dependency: php-cli = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest

Я продолжал получать серию этих ошибок, поэтому решил просто запустить yum update, обновить его до php 5.3 и посмотреть, смогу ли я заставить это работать, пока я не выясню, как правильно перейти на более раннюю версию ...

Итак, я запустил yum update и получил:

yum update
Loaded plugins: allowdowngrade, fastestmirror
Loading mirror speeds from cached hostfile
 * atomic: www6.atomicorp.com
 * base: mirror.rackspace.com
 * epel: mirror.symnds.com
 * extras: mirror.symnds.com
 * updates: mirror.symnds.com
Setting up Update Process
No Packages marked for Update

Затем я побежал:

yum install php-devel php php-cli php-common php-mcrypt php-mysql php-pdo php-ldap php-mbstring php-xml php-xmlrpc php-odbc php-imap php-snmp php-gd

Но это дало:

Transaction Check Error:
  package libmcrypt-2.5.8-4.el5.centos.x86_64 (which is newer than libmcrypt-2.5.7-5.el5.i386) is already installed
  file /usr/bin/phar.phar from install of php-cli-5.3.6-3.el5.art.i386 conflicts with file from package php-cli-5.3.6-3.el5.art.x86_64
  file /usr/bin/phpize from install of php-cli-5.3.6-3.el5.art.i386 conflicts with file from package php-cli-5.3.6-3.el5.art.x86_64

Я попробовал сервис httpd restart и получил:

Stopping httpd:                                            [FAILED]
Starting httpd: httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 6 of /etc/httpd/conf.d/php.conf: Cannot load /etc/httpd/modules/libphp5.so into server: /etc/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory

Итак, теперь я полностью сбит с толку и действительно, действительно нуждаюсь в помощи ...

Каждый раз, когда со мной происходило что-то подобное (мне нужна была более старая копия, чем то, что находится в репозитории, или новее), мне было легче создать свой собственный RPM из исходного кода, и я рекомендую это сделать.

Это не так уж сложно, просто отнимает немного больше времени, и вы можете убедиться, что используете все самое последнее, что ЕЩЕ в вашей системе, и только старые (или новые) версии PHP.

http://www.imminentweb.com/technologies/create-centos-php-rpm

должен помочь вам с основами создания собственных PHP RPM на CentOS.

Если вы продолжите свой путь, вы, вероятно, столкнетесь с тем, что я называю «адом зависимостей». Старому PHP нужна старая версия X, которая нужна новой версии Y, и если вам нужна старая версия X, вам нужно также понизить рейтинг Y и так далее и так далее. Через 10-15 зависимостей вы используете достаточно небезопасную среду, потому что значительная часть вашей системы работает со старым кодом.

Вы можете попробовать: yum downgrade php

Перед этим отключите все репозитории надстроек. Основная проблема, с которой вы столкнетесь, заключается в том, что некоторые репозитории надстроек могут устанавливать зависимости, необходимые для PHP 5.3, но не необходимые для PHP 5.2 (например, различные версии sqlite).

В этом случае вам, возможно, придется принудительно удалить модули:

rpm -e --nodeps имя_пакета

Затем попробуйте перейти на более раннюю версию.

Если ничего не помогает, удалите все пакеты php 5.3 с помощью rpm -e --nodeps, а затем просто переустановите, используя исходные коды CentOS.

Ошибка «Отсутствует зависимость» часто возникает из-за смешивания репозиториев. Я предлагаю вам отключить atomic, epel репозиторий и попробуйте еще раз с CentOS тестирование репо на основе этот гид или Джейсон Литка репо.