Quelques astuces en vrac sur PHP.
Purge des sessions dépassées
Si vous cherchez où PHP sous linux gère cette fonctionnalité (session dépassées après 30 minutes), il fallait chercher dans CRON.. En /etc/crond.d/php.
Authentification via LDAP
Le code suivant permet d'effectuer une authentification sur une serveur LDAP via une page PHP.
<?php
// Adresse du serveur AD et base de la recherche
$ldapServer = "x.y.z.q"
$ldapBase = "DC=DOMAINE,DC=fr"
// mail et mot de passe de l'utilisateur capable de se connecter sur AD et d'en lire le conten
$ldapUsername= ""
$ldapPassword= "USER_AD_PASSWORD"
// Coordonnees a identifier
$userLogin="USER"
$userPassword="LOGIN"
// Connexion au serveur LDAP
$ldap = ldap_connect($ldapServer)
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3)
if ($ldap)
{
print "Connection a AD/LDAP, OK"
// Ouverture d'un connexion
$bind = @ldap_bind($ldap, $ldapUsername, $ldapPassword)
if (!$bind)
{
print "Erreur, impossible de binder l'utilisateur AD/LDAP"
exit
}
print "Bind de l'utilisateur AD/LDAP, OK"
// Recherche du login a identifier
$result = @ldap_search($ldap, $ldapBase, "sAMAccountName=".$userLogin)
if (ldap_count_entries($ldap, $result)==0)
{
print "Erreur, aucun utilisateur de ce nom n'a ete trouve"
exit
}
if (ldap_count_entries($ldap, $result)>1)
{
print "Erreur, trop d'utilisateur de ce nom trouves"
exit
}
// Authentification si un user existe sur AD
if (ldap_count_entries($ldap, $result) == 1)
{
print "Utilisateur trouve"
$info = ldap_get_entries($ldap, $result)
$userDn = $info[0]["dn"]
$auth = @ldap_bind($ldap, $userDn, $ldapPassword)
}
if ($auth)
print "Utilisateur authentifie : '" . $username . "' (" . $userDn . ")."
else
print "Impossible d'authentifier : '" . $username . "'."
}
else
print "Impossible de se connecter AD/LDAP"
@ldap_close($ldap)
?>
Soucis de mémoire lors de l'exécution d'une fonction GD
En réalité c'est normal, PHP limite l'utilisation de la mémoire à 8MO par scripte. GD typiquement est gourmand et l'erreur suivante se produit alors :
Fatal error: Allowed memory size of 5242880 bytes exhausted (tried to allocate 22425 bytes) in ./sources/functions.php on line 2562
Methode n°1
La solution est simplement d'augmenter l'espace alouer au scripte dans php.ini:
memory_limit = 30M Maximum amount of memory a script may consume (8MB)
Methode n°2
Changer dynamiquement cette valeur:
//valeur initiale
echo "get_cfg_var(memory_limit) = ".@get_cfg_var('memory_limit')."";
echo "ini_get(memory_limit) = ".@ini_get('memory_limit')."";
//modification
@ini_set("memory_limit",'10M');
// on tente d'allouer 10 M
//modification prise en compte ?
echo "get_cfg_var(memory_limit) = ".@get_cfg_var('memory_limit')."";
echo "ini_get(memory_limit) = ".@ini_get('memory_limit')."";
// on verifie si l'allocation de 10 M a pu etre possible sur le serveur
Suppression des accents
$output = strtr(utf8_decode($output),
"\xA1\xAA\xBA\xBF".
"\xC0\xC1\xC2\xC3\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF".
"\xD0\xD1\xD2\xD3\xD4\xD5\xD8\xD9\xDA\xDB\xDD".
"\xE0\xE1\xE2\xE3\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF".
"\xF0\xF1\xF2\xF3\xF4\xF5\xF8\xF9\xFA\xFB\xFD\xFF",
"!ao?AAAAACEEEEIIIIDNOOOOOUUUYaaaaaceeeeiiiidnooooouuuyy");
$output = utf8_encode(strtr($output, array("\xC4"=>"Ae", "\xC6"=>"AE", "\xD6"=>"Oe",
"\xDC"=>"Ue", "\xDE"=>"TH", "\xDF"=>"ss", "\xE4"=>"ae", "\xE6"=>"ae",
"\xF6"=>"oe", "\xFC"=>"ue", "\xFE"=>"th")));
Référence au fichier courrant
Poster un nouveau commentaire