在Debian中将PHP 5.4降级到5.3


8

我必须在服务器上进行Debian dist升级...在此过程中,PHP升级到了5.4。我们使用的ioncube仅支持最高5.3 atm,而我在寻找如何从5.4降级到5.3时遇到了一些麻烦。有人知道吗?


3
我当然希望这并不意味着您正在服务器上使用debian不稳定(sid)。因为那将是一个非常非常糟糕的主意。
黄昏

我必须进行远程升级才能满足PCI合规性的某些要求

2
Sid以《玩具总动员》中的邪恶小子命名。他打破玩具。和服务器。
黄昏

如果packages.debian.com网站是最新的(我相信是最新的),那么您必须位于Debian Unstable上。dist升级不会将您转移到其他版本。
AndrewR 2012年

@duskwuff称为不稳定,但并非真正不稳定。在某些情况下,它可能比稳定版本更好。显然,在公共服务器上通常不是最好的解决方案,因为它无法由debian安全团队获得快速的安全更新...

Answers:


11

上面的解决方案都不适合我。所做的工作是将必要的程序包固定到旧的马stable上,例如

将以下内容添加到 /etc/apt/sources.lst

deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.us.debian.org/debian/ squeeze main contrib non-free

创建

/etc/apt/preferences.d/preferences

并添加您需要降级的软件包,例如我

Package: php5*
Pin: release a=oldstable
Pin-Priority: 700

Package: libapache2-mod-php5    
Pin: release a=oldstable
Pin-Priority: 700

Package: libapache2-mod-php5
Pin: release a=oldstable
Pin-Priority: 700

Package: php-pear
Pin: release a=oldstable
Pin-Priority: 700

Package: *
Pin: release a=stable
Pin-Priority: 600

然后运行命令

aptitude update
aptitude reinstall <necessary packages>
/etc/init.d/apache2 restart

如果您想知道需要升级哪些软件包,请运行:

dpkg -l|grep php|grep 5.4|awk '{print $2}'

1
W:未能获取ftp.us.debian.org/debian/dists/squeeze/main/source/Sources:404找不到[IP:2610:148:1f10:3 :: 89 80]
dionyziz,2013年

您现在需要使用以下命令更新sources.list文件:deb http://archive.debian.org/debian squeeze main contrib non-free deb-src http://archive.debian.org/debian squeeze main contrib non-free 请参阅wiki.debian.org/DebianSqueeze
StevieD

2

您可以尝试使用此方法,但后果自负。我自己没有尝试过。;)

  • apt-get remove php5
  • 从稳定版下载PHP5软件包
  • dpkg --force php5_5.3.3-7+squeeze8_all.deb
  • dpkg --set-selections PHP5 hold

最后一行阻止升级到5.4。当您准备好5.4时,运行dpkg --set-selections PHP5 install

5.4版的IonCube距离我阅读的内容还有一段时间。


我已经知道了dpkg: error: unknown force/refuse option 'php5_5.3.3-7+squeeze13_all.deb'
Holms 2012年

1
如果您仍在进行此操作,则应该知道IonCube已升级为可与PHP 5.4一起使用。只需坚持使用PHP 5.4并下载最新的IonCube库即可。
AndrewR 2012年

1

您可以使用fastcgi并行安装两个PHP版本,例如PHP 5.5x和5.3x,甚至安装三个PHP版本,例如PHP 5.5x,5.4x和5.3x。

1.安装Libs,fastCGI,git

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libxml2 libxml2-dev libssl-dev
sudo apt-get install libcurl4-openssl-dev pkg-config
sudo apt-get install libcurl4-gnutls-dev libjpeg-dev libpng12-dev libmysqlclient-dev

sudo apt-get install git
cd /opt
sudo git clone https://github.com/cweiske/phpfarm

sudo apt-get install libapache2-mod-fastcgi apache2-mpm-worker apache2-suexec
sudo a2enmod actions fastcgi suexec
sudo service apache2 restart

2.编译并验证PHP

cd /opt/phpfarm/src
sudo ./compile.sh 5.3.29
cd /opt/phpfarm/inst/bin
./php-5.3.29 --version

3.配置FastCGI

sudo mkdir /var/www/cgi-bin
cd /var/www/cgi-bin
sudo nano php-cgi-5.3.29

#!/bin/sh
PHPRC="/etc/php5/cgi/5.3.29/"
export PHPRC
PHP_FCGI_CHILDREN=3
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/phpfarm/inst/bin/php-cgi-5.3.29

使该文件可执行。

4.创建一个新的虚拟主机

将其放入您的主机:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName fastcgidemo.dev
    DocumentRoot /var/www/fastcgidemo

    #php-cgi setup
    #used for multiple php versions
    FastCgiServer /var/www/cgi-bin/php-cgi-5.3.29
    ScriptAlias /cgi-bin-php/ /var/www/cgi-bin/

    <Directory "/var/www/fastcgidemo">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted

            AddHandler php-cgi .php
            Action php-cgi /cgi-bin-php/php-cgi-5.3.29
            <FilesMatch "\.php$">
                SetHandler php-cgi
            </FilesMatch>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error_fastcgidemo.log
    CustomLog ${APACHE_LOG_DIR}/access_fastcgidemo.log combined
</VirtualHost>

将域添加到/ etc / hosts

127.0.0.1 fastcgidemo.dev

5.测试一切

启用站点并重新启动apache并使用/ var / www / fastcgidemo中的phpinfo()创建一个新文件来测试您的配置。

转到浏览器并输入fastcgidemo.dev

希望能帮助到你!

完整教程:

http://www.jabommi.de/wiki/downgrade-php-5-5-to-5-3-ubuntu-14-with-multiple-php-versions/


0

将PHP 5.4降级到5.3

首先检查php5支持哪些版本:

apt-cache showpkg php5

这是您可能会发现有用的脚本(它删除了PHP 5.4并安装了PHP 5.3):

sudo apt-get remove --purge `dpkg -l | grep php | grep -w 5.4 | awk '{print $2}' | xargs`
VERSION="php5_5.3.3-7+squeeze8_all" # CHANGES THIS WITH YOUR VERSION OF PACKAGE
sudo apt-get install php5=$VERSION php5-cli=$VERSION php5-common=$VERSION libapache2-mod-php5=$VERSION
sudo apt-get install php5=$VERSION php5-cli=$VERSION php5-common=$VERSION libapache2-mod-php5=$VERSION
sudo apt-get install php-pear=$VERSION php5-curl=$VERSION php5-gd=$VERSION php5-intl=$VERSION php5-mysql=$VERSION php5-pspell=$VERSION php5-recode=$VERSION php5-snmp=$VERSION php5-sqlite=$VERSION php5-tidy=$VERSION php5-xmlrpc=$VERSION php5-xsl=$VERSION

您可以通过命令检查可用版本: apt-cache showpkg php5

安装后,请通过以下命令进行验证: php --version

请小心,不要安装没有指定软件包版本的其他任何软件包(例如php5-xcache),否则apt-get将再次用5.4替换您的PHP实例!

为了防止这种情况的发生,您可以保留这些软件包。

使用dpkg存放软件包

要按dpkg保留软件包,可以执行以下命令:

echo "php5 hold" | sudo dpkg --set-selections

要保存所有PHP软件包,请运行以下命令:

dpkg --get-selections | grep ^php5 | sed s/install/hold/g | sudo dpkg --set-selections

以下命令将向您显示php软件包的持有状态:

sudo dpkg --get-selections | grep ^php

使用能力来保持包裹

您也可以使用aptitude来保存软件包,例如:

sudo aptitude hold php5

取消保留:

sudo aptitude unhold php5

附加功能

另请参阅关于Ubuntu的相同问题,以获取更多想法。


0

我先来看一下我已经安装了什么

dpkg -l |grep php

然后卸载任何版本为5.4示例的php ...

apt-get remove libapache2-mod-php5 php-db php-pear php5 php5-cli php5-common

那么您需要清理旧文件(没有必要,但可能会有所帮助)

apt-get clean

然后像上面一样编辑并固定

nano /etc/apt/preferences.d/preferences

如果仍然不起作用,请重复此操作,但是这次禁用说喘息的存储库,仅保留sid。你可以

apt-get install --reinstall 

-1

我必须将apt来源更改为wheezy来源,以全面升级到wheezy。卸载了php,使用新的apt源码升级了系统,安装了php ...一切都很顺利。


您至少可以发布这些资源。我的apt来源那里没有任何php5.3 = /
holms 2012年

根本没有答案...
pduersteler
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.