PHP 5.3, back to PHP 5.2

Comme vu dans l’article PHP 5.2 goto PHP 5.3, le passage de PHP 5.2 à PHP 5.3 lors d’un upgrade de Lenny à Squeeze peut poser des problèmes de compatibilité.

Il est possible de downgrader PHP 5.3 et de repasser (temporairement) à PHP 5.2 sur Squeeze en utilisant directement les paquets Lenny:

  •  rajouter dans /etc/apt/sources.list :

deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free

  • modifier le fichier /etc/apt/preferences (ou /etc/apt/preferences.d/fichier) :

Package: libapache2-mod-php5 php5 php5-common php5-cli php5-mysql (…)
Pin: release a=oldstable
Pin-Priority: 1001

  • désinstaller les packages PHP 5.3 :

aptitude update
aptitude remove `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

  • installer les packages PHP 5.2 en spécifiant la target lenny (oldstable) :

aptitude install -t oldstable `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

On vérifie que les versions sont correctes et on peut redémarrer Apache.

La commande date

Commande plutôt simple et de base sur un système Unix, date a pas mal de petites options sympa.
Un petit exemple quand on construit une politique de sauvegarde sur un serveur Linux (réflexe de base à avoir quand on administre un serveur) avec par exemple l’idée de garder une archive par mois sur les deux derniers mois du répertoire de sauvegarde (nommé save).
L’idée étant en crontab par exemple d’avoir des commandes du style :

cp -al /home/save/ /home/archive/save`/bin/date +\%Y\%m\%d`
rm -rf /home/archive/save`/bin/date --date='2 months ago' +\%Y\%m\%d`

On note le date --date='2 months ago' bien pratique !

PHP 5.2 goto PHP 5.3

Passage de Debian Lenny à Debian Squeeze oblige pour tout serveur correctement infogéré, beaucoup de développeurs sont en train de valider leurs codes pour passer de PHP 5.2 à PHP 5.3.
Si vous rencontrez dans vos journaux d’erreur quelque chose comme :

PHP Parse error: syntax error, unexpected T_GOTO, expecting T_STRING or ‘(‘ in /arborescence/fichier.php on line 43

C’est que votre code PHP a été écrit avec une fonction prénommée goto ….
Or goto est un mot réservé en PHP >= 5.3.0 (car nouvelle méthode)
À vos grep/sed :)

WordPress Themes