[PHP] Corriger l’erreur de getimagesize() de PHP causée par un .htaccess

L’utilisation de la fonction getimagesize() en php est très pratique pour récupérer les dimensions d’une image passée en paramètre.

Si votre site est protégé par un .htaccess qui restreint l’accès à certaines personnes, vous devez avoir une erreur du type :

 

Warning: getimagesize(http://www.domain.com/images/fleur.png): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required in /home/domain.com/httpdocs/page.php on line 36

 

Comme l’erreur l’indique, il y a un problème d’autorisation pour accéder à l’image. Pour corriger cette erreur, il suffit de spécifier le nom d’utilisateur et le mot de passe nécessaires pour le .htaccess.

 

Remplacez :

 

[code lang= »php »]getimagesize(<a href="http://www.domain.com/images/fleur.png">http://www.domain.com/images/fleur.png</a>);[/code]

 

par

 

[code lang= »php »]getimagesize("nomutilisateur:motdepasse@http://www.domain.com/images/fleur.png");[/code]

[PHP] Générer de la documentation pour PHP

phpdoc

 

La documentation relative à un ensemble de classes dans un langage de programmation est très importante car elle permet à d’autres personnes de comprendre rapidement l’architecture de votre application sans avoir à parcourir tous les fichiers. C’est un gain de temps appréciable !
Cette documentation peut également vous être utile, si vous abandonnez le développement d’un projet pendant quelques temps et que vous souhaitez vous y replonger.

Heureusement des outils existent pour générer automatiquement de la documentation. Un ensemble de paramètres est à inscrire dans votre code, l’outils de documentation récupérera ces éléments pour générer un document en HTML, PDF, etc…

 

Les principaux paramètres sont regroupés dans ce document. Voici un exemple :

 

/**
* Instantiate a new user
* @param int $id
* @access public
*/

 

Ici on dit par exemple que ce qui va suivre aura la description "Instantiate a new user", prendra en paramètre un int de nom $id et aura un accès public. Ce code est à placer avant une déclaration de méthode par exemple.

 

Pour générer la documentation, mon choix s’est porté sur PHPDocumentator, qui semble après mes tests le plus complet.

 

Voici le processus :

  • Télécharger le script sur http://www.phpdoc.org/
  • Mettez le dossier téléchargé sur votre serveur web
  • Remplissez l’onglet "Files" afin de définir les fichiers et dossiers à analyser
  • Remplissez le dossier cible (où sera la documentation) dans l’onglet "Output"
  • Renseignez les champs dans l’onglet "Options" si vous le souhaitez
  • Cliquez sur "Create" en bas à droite de la page
  • Rendez-vous dans le dossier spécifié précédemment dans "Target"
  • Ouvrez la page index.html

 

Comme vous pouvez le voir la génération est simple. En revanche j’ai rencontré un petit problème avec les fichiers .css générés dans le dossier /media du dossier "Target". Les fichiers sont en .cs et non en .css, modifiez juste l’extension pour que tout rentre dans l’ordre.

[PHP] Cacher les erreurs PHP sur n’importe quel hébergement (mutualisé ou dédié)

En phase de développement, l’affichage des erreurs est un gain de temps non négligeable, en revanche sur un site en production, il est fortement conseillé de supprimer l’affichage des erreurs PHP pour des raisons de sécurité.

 

Exemple d’erreur :

 

Fatal error: require() [function.require]: Failed opening required ‘WS_RdOOT/lib/comment.class.php’ (include_path=’.:/Applications/MAMP/bin/php5/lib/php’) in/Applications/MAMP/htdocs/fds_local/index.php on line 8

 

Ce simple message peut donner des informations sur l’architecture de votre application (site web) et ainsi faciliter le travail des pirates.

Sur un serveur dédié ou tout autre hébergement donnant accès au fichier php.ini (fichier de configuration de PHP), trouver la ligne :

 

display_errors = On

 

Remplacez On par Off et redémarrez le serveur HTTP.

 

Sur un hébergement dédié ne proposant pas l’accès au fichier php.ini, il est également possible de changer ce paramètre en le modifiant au runtime. Il suffit d’ajouter dans votre code PHP la ligne suivante :

 

[code lang= »"php" »]error_reporting(0);[/code]

 

L’affichage des erreurs est maintenant désactivé. Attention pour que ce système soit efficace, il faut inclure cette ligne dans toutes les pages de votre site.

La fonction error_reporting() permet également d’afficher certaines erreurs, les warnings, les notices, etc… Pour plus d’informations reportez-vous à la page dédiée à cette fonction.

[PHP] Utiliser cURL au lieu de file_get_contents() avec TinyURL

TinyURL est un service permettant de raccourcir les URL afin de pouvoir les publier sur des sites comme Twitter qui ne permettent des messages que 140 caractères maximum.

Par exemple https://www.aymericlagier.com peut être raccourci en http://tinyurl.com/ms75l4. Pratique pour les URL à rallonge.

L’API de TinyURL permet de générer des URL raccourcies automatiquement via un script PHP. Pour obtenir l’URL raccourcie, il suffit de faire :

file_get_contents(
‘http://tinyurl.com/api-create.php?url=’ . WS_URL .
‘/news_’ . String::ws_urlencode($news->subject) . ‘_’ . $news->id . ‘.html’)

[code lang= »php »]<?php
$url = file_get_contents(‘http://tinyurl.com/api-create.php?url=https://www.aymericlagier.com’);
echo $url;
?>[/code]

Cependant sur certains hébergements comme 1&1, la fonction file_get_contents() est désactivée, ce qui rend impossible l’utilisation du script ci-dessus. Il existe une solution pour contourner le problème, cURL :

[code lang= »php »]<?php
// URL que l’on souhaite raccourcir
$maketiny = ‘https://www.aymericlagier.com’;

function make_tiny($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL,’http://tinyurl.com/api-create.php?url=’.$url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$tinyurl = make_tiny($maketiny);
echo $tinyurl;
?>[/code]

Source  : Papermashup

[PHP] Changer la configuration de PHP et Apache sur les mutualisés 1&1

Après l’article sur la modification de la configuration PHP sur les mutualisés OVH ici voici un article sur la configuration des mutualisés 1&1.

En effet, par défaut PHP est en version 4 ce qui peut poser des problèmes pour l’utilisation entre autres des try/catch ou de la librairie SimpleXML.
Pour mettre PHP en version 5 par défaut, il faut rajouter à la racine de votre serveur un fichier .htaccess avec la ligne suivante :

[code lang= »bash »]AddType x-mapp-php5 .php[/code]

Autre problème chez 1&1, le traditionnel :

[code lang= »bash »]ErrorDocument  404  /errors/404.html[/code]

ne fonctionne que pour les pages d’erreur en .htm ou .html. Il est donc impossible de faire :

[code lang= »bash »]ErrorDocument 404 /errors/404.php[/code]

La solution proposée par 1&1 est de contourner le problème en mettant :

[code lang= »bash »]RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /errors/404.php[/code]

Je cherche maintenant à personnaliser les autres erreurs (403, 500, etc…).