PHP: Utiliser le mode E_STRICT est une très bonne chose !

Depuis la version 5.0 de PHP, un nouveau mode d’erreur est apparu: E_STRICT. Il ne fait pas parti de E_ALL et est désactivé par défaut dans toute installation classique de PHP. Ce nouveau mode permet en fait de générer des conseils à partir de votre code. Testez-le, vous verez c’est sympa ! Il peut par exemple retourner ce genre d’erreur:

Strict Standards: date() [function.date]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin’ for ‘CEST/2,0/DST’ instead in /home/mon/fichier.php on line 196

Note: Si vous tombez ici par hasard et que vous souhaitez la liste des timezones disponibles dans PHP, elle est disponible à cette adresse.
Ici, PHP me fait penser que j’utilise la valeur par défaut du timezone du système d’exploitation. Étant sur mon propre serveur, il n’y a pas de problèmes mais sur un serveur mutualisé, on peut avoir des surprises ! 😉

Activer les rapports E_STRICT

Pour activer les rapports d’erreurs E_STRICT, c’est très simple. Ajoutez en haut de votre fichier PHP cette commande:

Ou modifiez votre fichier php.ini directement !

Note: Désactivez ce mode en production, c’est préférable :)

facebooktwittergoogle_plusredditpinterestlinkedinmail

Bien gérer les tâches avec Redmine depuis Eclipse

Redmine est un Bug Tracker (on peut même l’appeller un Gestionnaire de projet tellement il est complet) très innovant qui contient toutes les optionnalités necessaires à un bon développement. Après avoir installer Ruby On Rails, puis Redmine lui-même, cet outil est très performant. Pour encore plus de facilitée, Redmine peut être interfacé à Mylyn (plug-in de gestion approfondie des tâches) grâce à Redmine-Mylyn Connector.
Continue reading Bien gérer les tâches avec Redmine depuis Eclipse

facebooktwittergoogle_plusredditpinterestlinkedinmail

Installer Redmine avec PostgreSQL

Redmine est un gestionnaire de projet, plus particulièrement avancé dans la gestion des tâches. Il gêre les dépots SVN, GIT ou CVS et peut être interfacé avec Mylyn sous Eclipse ! Il est très complet et néanmoins impressionnant par sa claretée.

Pour installer Redmine, il vous faut une installation Ruby On Rails. Nous allons utiliser PostgreSQL comme base de données.
Continue reading Installer Redmine avec PostgreSQL

facebooktwittergoogle_plusredditpinterestlinkedinmail

Installer Ruby On Rails + Passenger pour Apache2 sur Debian

Certains outils très intéressants utilisent Ruby On Rails, il faut donc l’installer. Nous allons voir comment installer Ruby On Rails en installant en premier lieu le langage Ruby puis son gestionnaire de paquets, RubyGems, puis, grâce à celui-ci, Rails.

Installer Ruby depuis les sources

Nous allons compiler et installer Ruby nous-même. Pour ce faire, nous allons télécharger puis décompresser la dernière version stable de Ruby: Continue reading Installer Ruby On Rails + Passenger pour Apache2 sur Debian

facebooktwittergoogle_plusredditpinterestlinkedinmail

PHP 5.2.10 – PEAR est cassé

En changeant de version vers la nouvelle à cause d’un BUG, il est possible d’en trouver d’autres… C’est le cas dans PHP 5.2.10 où le package PEAR n’est pas bien installé. Les “channels” ne sont pas bien configurés… En effet, lors de la compilation, on a déjà des erreurs comme celles-ci:

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 139

C’est donc bien que le phar des channels n’est pas correct. Après l’installation, lorsque l’on essaye d’installer le packet Net_IPv6 par exemple, on a ce message:

pear.php.net is using a unsupported protocal – This should never happen.
install failed

Continue reading PHP 5.2.10 – PEAR est cassé

facebooktwittergoogle_plusredditpinterestlinkedinmail

[notice] child pid XXXXX exit signal Segmentation fault (11)

L’erreur de Segmentation fault arrive – parfois – sans prévenir, elle est le témoin d’un bug ou d’une erreur dans le script PHP. La double assignation de variables peut faire ça ($var1 = $var2 = 'oups';) mais c’est souvent une erreur non-humaine… Elle est visible du côté utilisateur car le processus lui même de la page contenant cette erreur est “killé”, ce qui en résulte une réponse vide du serveur Apache, ce qui fait que Firefox présente une jolie fenêtre “Ouverture fichier.php”.

Capture-Ouverture de tests.php

En effet, j’était avec Apache 2.2.9 et PHP 5.2.6-1+lenny3 (installé via apt-get) et il m’est arrivé quelque chose d’assez surprenant, c’est une erreur de segmentation lors de l’assignation à une variable quelconque du résultat PDOStatement d’une requête faite avec PDO::query. Une heure ou deux à chercher d’où pouvait venir le problème pour enfin arriver à la conclusion que c’est un bug de PHP.

Dans ce cas, une seule solution, la mise à jour. J’ai donc décider de mettre à jour Apache en compilant la nouvelle version moi-même, idem pour PHP, que j’ai compiler. Je suis passé à Apache 2.2.13 avec PHP 5.2.10 pur. C’est parfait, ça marche ! :)

facebooktwittergoogle_plusredditpinterestlinkedinmail

Mettre à jour Apache

Parfois, dans n’importe quel programme, il y a des bugs, qui sont corrigés dans des futures versions. Si vous êtes confronté à un bug, il faut donc mettre à jour le logiciel. Nous allons voir comment mettre à jour Apache vers une version mineure plus récente. C’est-à-dire par exemple de la version 2.2.9 à la version 2.2.13. Mais pas de la 2.0 à la 2.2, encore moins de la 1 à la 2 !

Nous allons prendre des valeurs pour tout l’article, qui sont:

  • Répertoire de l’ancienne version d’Apache: /etc/apache-2.2.9
  • Répertoire de la nouvelle version d’Apache: /etc/apache-2.2.13

Continue reading Mettre à jour Apache

facebooktwittergoogle_plusredditpinterestlinkedinmail

PHP: include_path, comment faciliter les inclusions

Dans PHP, il est très fréquent de devoir faire des inclusions de librairies, functions, classes en incluant des fichiers. Le seul “problème” c’est que ces fichiers à inclure ne sont pas toujours dans le même répertoire que le fichier incluant. On peut donc utiliser des chemins relatifs comme ../../dossier/fichier.php. Seulement, si notre fichier incluant changes… il faudras changer tous les chemins des inclusions !

On peux donc utiliser les chemins absolus comme /home/projet/lib/fichier.php. C’est parfait, on peut changer de place le fichier incluant et ça marche toujours ! Seulement, si le dossier contenant les librairies changes, il faudras à nouveau tout modifier.

Dans ce cas, pourquoi le pas créer une constante PATH_LIB par exemple, qui contient le chemin du dossier contenant toutes les librairies ? Si le dossier changes, on changes juste la constante. Certes, c’est une solution pratique.

Néanmoins, il y a encore plus simple ! Continue reading PHP: include_path, comment faciliter les inclusions

facebooktwittergoogle_plusredditpinterestlinkedinmail

SoapFault exception: [HTTP] Error Fetching http headers

Lors d’une utilisation longue de SOAP (des miliers de commandes ou des commandes très longues côté serveur), il arrive souvent que SOAP Client retourne une exception comme celle-ci:

Continue reading SoapFault exception: [HTTP] Error Fetching http headers

facebooktwittergoogle_plusredditpinterestlinkedinmail