Rétrograder PHP 5.4 à 5.3 dans Debian

8

J'ai dû faire une mise à niveau de Debian dist sur mon serveur ... dans le processus, PHP a été mis à niveau vers 5.4. Nous utilisons ioncube qui ne prend en charge que jusqu'à 5,3 atm, et j'ai du mal à trouver comment rétrograder à 5.3 de 5.4. Quelqu'un sait comment?

Carnivoris
la source
3
J'espère certainement que cela ne signifie pas que vous utilisez Debian unstable (Sid) sur un serveur. Parce que ce serait une très, très, très mauvaise idée.
duskwuff -inactive-
J'ai dû faire une mise à niveau dist pour répondre à certaines exigences de conformité PCI
2
Sid est nommé d'après l'enfant maléfique de Toy Story. Il casse des jouets. Et les serveurs.
duskwuff -inactif-
Si le site packages.debian.com est à jour (ce que je pense), alors vous devez être sur Debian Unstable. Une mise à niveau dist ne vous déplacerait pas vers une version différente.
AndrewR
@duskwuff ça s'appelle unstable mais ce n'est pas vraiment instable. Dans certains cas, il peut être préférable à la version stable. Évidemment, sur un serveur public n'est pas souvent la meilleure solution, car il ne reçoit pas de mises à jour de sécurité rapides par l'équipe de sécurité Debian ...

Réponses:

11

Aucune des solutions ci-dessus n'a fonctionné pour moi. Ce qui a fonctionné, c'était d'épingler les packages nécessaires à l'ancienne écurie, comme

Ajoutez ce qui suit à /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

Créer

/etc/apt/preferences.d/preferences

Et ajoutez les packages dont vous avez besoin de déclasser comme dans mon cas

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

Exécutez ensuite les commandes

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

Si vous voulez savoir quels packages vous devez mettre à niveau, lancez simplement:

dpkg -l|grep php|grep 5.4|awk '{print $2}'
Gros doigt
la source
1
W: échec de la récupération de ftp.us.debian.org/debian/dists/squeeze/main/source/Sources : 404 Not Found [IP: 2610: 148: 1f10: 3 :: 89 80]
dionyziz
Vous devez mettre à jour le fichier sources.list avec ceci maintenant: deb http://archive.debian.org/debian squeeze main contrib non-free deb-src http://archive.debian.org/debian squeeze main contrib non-free Voir wiki.debian.org/DebianSqueeze
StevieD
2

Vous pouvez essayer cela, mais faites-le à vos risques et périls. Je ne l'ai pas essayé moi-même. ;)

  • apt-get remove php5
  • Téléchargez le package PHP5 depuis Stable
  • dpkg --force php5_5.3.3-7+squeeze8_all.deb
  • dpkg --set-selections PHP5 hold

La dernière ligne pour empêcher la mise à niveau vers 5.4. Lorsque vous êtes prêt pour la version 5.4, exécutezdpkg --set-selections PHP5 install

IonCube for 5.4 est un peu éloigné de ce que j'ai lu.

AndrewR
la source
J'ai çadpkg: error: unknown force/refuse option 'php5_5.3.3-7+squeeze13_all.deb'
holms
1
Si vous y travaillez toujours, sachez que IonCube a été mis à niveau pour fonctionner avec PHP 5.4. Restez fidèle à PHP 5.4 et téléchargez les dernières bibliothèques IonCube.
AndrewR
1

Vous pouvez installer les deux versions PHP parallèles, par exemple PHP 5.5x et 5.3x ou même trois versions PHP parallèles, par exemple PHP 5.5x, 5.4x et 5.3x en utilisant fastcgi.

1. Installez 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. Compilez PHP et vérifiez-le

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

3. Configurer 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

Rendez ce fichier exécutable.

4. Créez un nouvel hôte virtuel

Mettez ceci dans votre hôte:

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

Ajoutez les domaines à / etc / hosts

127.0.0.1 fastcgidemo.dev

5. Testez tout

Activez le site et redémarrez apache et créez un nouveau fichier avec phpinfo () dans / var / www / fastcgidemo pour tester votre configuration.

Allez dans le navigateur et tapez fastcgidemo.dev

J'espère que cela aide!

Tutoriel complet sur:

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

jb7AN
la source
0

Rétrograder PHP 5.4 à 5.3

Vérifiez d'abord les versions prises en charge pour php5:

apt-cache showpkg php5

Voici le script que vous pourriez trouver utile ( il supprime PHP 5.4 et installe 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

Où les versions disponibles, vous pouvez vérifier par commande: apt-cache showpkg php5

Après l'installation, vérifiez-le par commande: php --version

Veuillez faire attention et n'installez aucun autre paquet sans que la version du paquet ne soit spécifiée (comme php5-xcache), sinon apt-get remplacera à nouveau votre instance PHP par 5.4!

Pour éviter cela, vous pouvez conserver ces packages.

Conservation des packages à l'aide de dpkg

Pour contenir des packages par dpkg, vous pouvez exécuter la commande suivante:

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

Pour contenir tous les packages PHP, exécutez la commande suivante:

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

La commande suivante vous montrera l'état de conservation de vos packages php:

sudo dpkg --get-selections | grep ^php

Tenir des packages en utilisant aptitude

Vous pouvez également contenir des packages en utilisant aptitude, par exemple:

sudo aptitude hold php5

Détenir:

sudo aptitude unhold php5

Suppléments

Voir aussi les mêmes questions pour Ubuntu, pour plus d'idées.

kenorb
la source
0

Je voudrais d'abord regarder ce que j'ai installé

dpkg -l |grep php

puis désinstallez tout php qui est un exemple de la version 5.4 ...

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

alors vous devez nettoyer les anciens fichiers (pas nécessaire mais pourrait aider)

apt-get clean

puis comme ci-dessus modifier et épingler

nano /etc/apt/preferences.d/preferences

si cela ne fonctionne toujours pas, répétez ceci mais cette fois désactivez les référentiels qui sont disons sifflants et ne laissez que les sid. vous pourriez

apt-get install --reinstall 
user2630659
la source
-1

J'ai dû faire une mise à niveau complète vers Wheezy en changeant mes sources aptes en sources Wheezy. Php désinstallé, mis à jour le système avec les nouvelles sources apt, php installé ... tout est en or.

Carnivoris
la source
quelles sources vous pourriez au moins les publier. mes sources apt n'ont pas de php5.3 là-dedans = /
holms
Pas une réponse du tout ...
pduersteler