Archives du mot-clé php

[PHP] Gestion du timezone pour la fonction date();

Hop, lorsqu’on monte en version de PHP, on a son lot de nouveautés et de surprises dont ce joli petit message :

[code][phpBB Debug] PHP Notice: in file /index.php on line 107: date() [function.date (http://megane3.fr/function.date)]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting 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 ‘CET/1.0/no DST’ instead[/code]

Une petite recherche et je tombe sur le manuel PHP de la fonction date_default_timezone_set(); (cf. http://www.php.net/manual/fr/function.date-default-timezone-set.php) qui m’explique que depuis la version 5.3.0 de PHP, cette fonction émet une alerte de type E_WARNING.

Je cite:

Depuis PHP 5.1.0 (lorsque les fonctions date/heure ont été écrites), chaque appel à une fonction date/heure génère une E_NOTICE si le décalage horaire n’est pas valide et/ou un message E_WARNING si vous utilisez des configurations système ou la variable d’environnement TZ.

Pour corriger tout ça, j’ai juste ajouter la fonction suivante trouver dans les commentaires du lien ci-dessus.

<?php
function getLocalTimezone()
{
    $iTime = time();
    $arr = localtime($iTime);
    $arr[5] += 1900; 
    $arr[4]++;
    $iTztime = gmmktime($arr[2], $arr[1], $arr[0], $arr[4], $arr[3], $arr[5], $arr[8]);
    $offset = doubleval(($iTztime-$iTime)/(60*60));
    $zonelist = 
    array
    (
        ‘Kwajalein’ => -12.00,
        ‘Pacific/Midway’ => -11.00,
        ‘Pacific/Honolulu’ => -10.00,
        ‘America/Anchorage’ => -9.00,
        ‘America/Los_Angeles’ => -8.00,
        ‘America/Denver’ => -7.00,
        ‘America/Tegucigalpa’ => -6.00,
        ‘America/New_York’ => -5.00,
        ‘America/Caracas’ => -4.30,
        ‘America/Halifax’ => -4.00,
        ‘America/St_Johns’ => -3.30,
        ‘America/Argentina/Buenos_Aires’ => -3.00,
        ‘America/Sao_Paulo’ => -3.00,
        ‘Atlantic/South_Georgia’ => -2.00,
        ‘Atlantic/Azores’ => -1.00,
        ‘Europe/Dublin’ => 0,
        ‘Europe/Belgrade’ => 1.00,
        ‘Europe/Minsk’ => 2.00,
        ‘Asia/Kuwait’ => 3.00,
        ‘Asia/Tehran’ => 3.30,
        ‘Asia/Muscat’ => 4.00,
        ‘Asia/Yekaterinburg’ => 5.00,
        ‘Asia/Kolkata’ => 5.30,
        ‘Asia/Katmandu’ => 5.45,
        ‘Asia/Dhaka’ => 6.00,
        ‘Asia/Rangoon’ => 6.30,
        ‘Asia/Krasnoyarsk’ => 7.00,
        ‘Asia/Brunei’ => 8.00,
        ‘Asia/Seoul’ => 9.00,
        ‘Australia/Darwin’ => 9.30,
        ‘Australia/Canberra’ => 10.00,
        ‘Asia/Magadan’ => 11.00,
        ‘Pacific/Fiji’ => 12.00,
        ‘Pacific/Tongatapu’ => 13.00
    );
    $index = array_keys($zonelist, $offset);
    if(sizeof($index)!=1)
        return false;
    return $index[0];
}
date_default_timezone_set(getLocalTimezone());
?>

Et le tour est joué !

Enjoy !

MàJ PHP sous Plesk

On continue pour les petites astuces techniques qui peut-être serviront à d’autres. Dans notre configuration actuelle, un serveur dédié sous CentOS 5.5 avec une interface plesk, pour mettre à jour PHP (qui est une très vieille version dans la configuration de base), il suffit en s’étant connecté en SSH sur son serveur avec le login root d’exécuter les commandes suivantes :

Récupération de repository corrects

wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh

Lancement de la demande de mise à jour

yum update php mysql php-mysql

Plus d’infos disponibles sur ce post, notamment en cas de problème: http://forum.ovh.com/showthread.php?t=43174

Et voilà, passage de PHP 5.1.6 à 5.2.16 😀

Pour connaitre votre version de PHP, au choix, dans un fichier php:

phpinfo();

Ou en ligne de commande:

php -v

Enjoy !

[phpMyAdmin] Ajout du Concepteur (pma_)

Hop, on continue dans les messages d’erreurs rencontrés pendant la mise à jour. Cette fois, c’est dans phpMyAdmin, j’ai le message suivant:

Certaines fonctionnalités ayant trait aux tables reliées sont désactivées. Pour une analyse du problème, cliquez ici.

Et en cliquant sur le lien fourni, on obtient les informations suivantes:

$cfg['Servers'][$i]['pmadb'] ... OK
$cfg['Servers'][$i]['relation'] ... en erreur [ Documentation ]
Fonctions relationnelles: désactivé

$cfg['Servers'][$i]['table_info'] ... en erreur [ Documentation ]
Affichage infobulle: désactivé

$cfg['Servers'][$i]['table_coords'] ... en erreur [ Documentation ]
$cfg['Servers'][$i]['pdf_pages'] ... en erreur [ Documentation ]
Génération de schémas en PDF: désactivé

$cfg['Servers'][$i]['column_info'] ... en erreur [ Documentation ]
Commentaires de colonnes: désactivé
Requêtes en signets: désactivé
Transformation: désactivé

$cfg['Servers'][$i]['history'] ... en erreur [ Documentation ]
Historique SQL: désactivé

$cfg['Servers'][$i]['designer_coords'] ... en erreur [ Documentation ]
Concepteur: désactivé

Cela signifique qu’il manque soit une table spécifique, soit une information dans une relation entre une table existante et le fichier configuration (souvent au niveau de $cfg[‘Servers’][$i][‘designer_coords’])

Dans un premier temps, il s’agit de récupérer les requêtes qui vont bien dans phpmyadmin/scripts/create_tables.sql et de l’exécuter au niveau root de mysql (je l’ai fait en ligne de commande).

Puis j’édite mon config.inc.php (après l’avoir copié de libraries/config.default.php s’il n’existe pas) pour avoir les infos suivantes :

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['controluser'] = 'user';
$cfg['Servers'][$i]['controlpass'] = 'mdp';

Et voilà, l’onglet « Concepteur » qui apparait et qui me donne un joli MCD avec tout plein de clés étrangères à gérer..

Et le tour est joué !

Enjoy !

Le W3C, World Wide Web Consortium

Le W3C, World Wide Web Consortium, est un organisme international qui développe des standards pour le Web afin que les gens puissent communiquer efficacement à travers Internet.

Le consortium existe depuis 1994 et est dirigé par l’inventeur du Web, Tim Berners-Lee.

Il est composé d’une équipe fixe (environ 70 personnes) et des membres (plus de 450 organisations). Les membres délèguent des ingénieurs au sein du W3C et participent ainsi à l’élaboration des spécifications techniques pour les technologies du Web.

Les spécifications déjà élaborées, il y en a une cinquantaine (HTML, XML, CSS, SVG, WAI…), sont accessibles au public sur le site de W3C. Il en est de même pour les compte-rendus des développements en cours.

Source : Alsacreations