Skip navigation.

Welcome chez moi !

L'histoire d'une vie d'entrepreneur / développeur Web Multimédia

Posts tagged with "php"

Frameworks CakePHP vs Symfony

, ,

Devant réaliser quelques sites et commençant à être un vieux de la vielle du PHP, j'ai décidé de me mettre un peu au goût du jour en essayant de passer à l'usage des frameworks.
En effet, l'équipe de production de ma boîte bossant sur le merveilleur environnement Ruby On Rails et, je l'avoue, n'ayant pas la foi d'apprendre le Ruby, j'ai décidé de me rabattre sur un framework PHP.

1 - Qu'est-ce qu'un framework:

Pour faire simple, un framework est un environnement de développement intégrant dès l'origine certaines routines ou fonctions afin de faire gagner du temps aux développeurs (RAD: Rapid Application Developpement). La pluspart d'entre eux s'appuis sur des standards de codage assez rigides afin de garantir au maximum une logique de programmation identique d'un développeur à l'autre (avec plus ou moins de réussite).

2 - Les avantages:

Ils sont assez nombreux mais nous nous contenterons d'une liste des caractéristiques les plus intéressantes (à mon goût):
- Ajax intégré : des fonctions déjà prêtes à l'emploi vous permettent de réaliser rapidement et simplement des fonctions Ajax, basées sur les bibliothèques les plus connues (prototype, scriptaculous, ...)
- Modèle MVC : les modèles d'objets, les traitements et les vues (présentation) sont entièrement séparées, ce qui permet une meilleure maintenabilité et une facilité dans le changement d'apparence sans toucher au code. De plus, un intégrateur web (à ne pas confondre avec un développeur) pourra sans mal changer le style du site sans détruire les éventuelles (trop grosses) parties de code incluses dans la page.
- Gestion simple des BDD : si les conventions de nomage sont respectées, vous pouvez aisément manipuler des enregistrements en base de donnée sans taper une ligne de code (CRUD).
- Génération des opérations CRUD (Create Read Update Delete): à partir du shéma de base de données ou de vos modèles d'objets, vous pouvez aisément générer les écrans de base (ou scaffold = échaffaudage) afin d'effectuer les manipulations de base sur vos enregistrements. Dans les cas les plus simples, il ne reste qu'à paufiner l'interface graphique (ex:manipulation d'utilisateurs).
- Evolutivité : certains permettent de mettre à jour, par une simple ligne de commande, le framework indépendamment du code développé auparavant afin de profiter de nouvelles fonctionnalités ou tout simplement de corrections de bugs.
- Respect des stades de développement : pour ceux qui ne le savent pas, un site internet, comme tout autre application, se doit de passer par les stades "développement", "test" et "production". Les frameworks les plus aboutis intègrent la gestion de bases de données propres à chaque étapes ainsi que l'affichage ou non de traces ou logs lors du parcours du site.
- URL simples : les plus récents s'appuient sur un système de réécriture des urls (url rewriting) s'appuyant (ou pas) sur le module mod_rewrite du serveur Apache. Les pages sont mieux référencées et on se passe agréablement des adresses du type index.php?action=afficher&article=48.

On va s'arrêter là pour l'instant.

3 - Quand utiliser un framework ?

L'utilisation d'un framework web est plutôt adaptée lors de la création d'applications web complexes. En effet, le gain de temps en terme de développement n'est pas instantanné puisque certaines parties inhérentes à la mise en place d'un framework sont incompréssibles (installation, configuration, ...). Ainsi, si vous voulez juste ajouter des effets ajax à votre site, l'utilisation directe d'une librairie javascript come scriptaculous sera profitable à la mise en place d'un framework.

4 - Les deux frameworks PHP en lice :

Comme l'indique le titre, j'ai arrêté mon choix sur deux frameworks assez répandus (mais pas forcément très connus) à savoir CakePHP et Symfony.

5 - Pourquoi eux?

Et pourquoi pas? Non plus sérieusement car un rapide coup d'oeil sur des tableaux comparatifs disponibles sur le net les donnent commes les plus aboutis pour PHP.
De plus, et il faut bien que je l'avoue, Symfony est supporté par une agence web française (Sensiolabs... stupeur une concurrente :wink:).

6 - CakePHP ... is it really cake?

Ok, on se rend sur le site de CakePHP et on comprend assez vite le message... Développer avec CakePHP, c'est du gâteau (d'où le nom).
Après avoir téléchargé le framework, dézippé ce dernier sous mon bon ubuntu (aaah, environnement de dev chéri), on se lance assez rapidement dans le cookbook (fr: livre de recettes).
L'ouvrage en ligne est plutôt bien découpé et on arrive assez rapidement à comprendre le fonctionnement de l'environnement: le code est clair, peu de lignes nécessaires pour les fonctions basiques... Je me suis même surpris à comprendre le fonctionnement du routing que je n'avais pas tout de suite saisi sous Symfony (really cake?).
Arrivant dans le dernier quart du book, on commence à peine à aborder la commande "bake", qui permet de générer les scaffolds, à savoir les interfaces CRUD des modèles que vous avez implémenté.
Le regret concernant ce framework porte réellement sur cette partie, ce point mériterait d'être plus détaillé car ce genre de scripts peuvent faire gagner un temps précieux.


To be continued

Connect a Microsoft SQL Server 2005 Express Edition avec/using PHP

, , , ...

A l'occasion d'une mission de consulting pour un client désireux d'ouvrir son système d'information basé sur l'ERP Navision de Microsoft, il a fallu développer un système de script PHP afin de réaliser des statistiques commerciales issues des données contenues dans les tables SQL Server utilisées par Navision.

Cependant, afin de ne pas ralentir le travail de l'entreprise à cause de tests successifs, redémarrage de service SQL ou autres, la solution employée a été d'utiliser un serveur SQL 2005 Express Edition, version gratuite fournie par Microsoft destinée aux développeurs.
De ce fait, toute la phase de tests/développement pouvait être réalisée localement.

Le problème, c'est que MSSQL est plus difficilement accessible qu'un bon vieux MySQL. Il va donc falloir redoubler d'efforts (et de courage) pour arriver à établir la connexion.

Voici un descriptif des étapes :


1 - Téléchargez et installez Microsoft SQL Server 2005 Express Edition sur le site de Microsoft (gratuit)

2 - Télécharger Microsoft SQL Server Management Studio Express (gratuit)

3 - Activez la librairie php_mssql.dll (pour windows) dans votre php.ini ou téléchargez les extensions PECL pour votre version de PHP sur le site officiel et configurez dans votre fichier php.ini le répertoire des extensions puis, redémarrez Apache en croisant les doigts pour que les extensions soient bien trouvées. Descendez également dans la partie concernant la gestion de serveur Microsoft SQL [MSSQL] et mettez le paramètre mssql.secure_connection à Off.

4 - Lancez regedit en passant par la commande Exécuter de votre menu démarrer et déployez l'arborescence HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\SuperSocketNetLib\Tcp et notez quelque part le port spécifié en face de la clé nommée TcpPort (ex: 1034).

5 - Lancez l'utilitaire de configuration serveur SQL et dans l'arborescence de gauche, ouvrez les propriétés concernant TCP/IP et les Canaux nommés (Configuration du réseau SQL..., configuration de SQL Native Client/Protocoles Clients). Activez-les.
Remarque, le port présent dans la boite de dialogue peut être différent de celui noté précedemment : n'y touchez pas!

6 - Ouvrez SQL Server Managment Studio Express et connectez-vous à votre serveur en utilisant une Authentification Windows. Votre serveur apparait dans la partie de gauche avec ses différents composants systèmes. Faites un clic droit sur la racine > Propriétés > Sécurité (en général MON-PC\SQLEXPRESS, où MON-PC est le nom de la station sur laquelle le serveur est installé).
Dans la partie de droite, sélectionnez "mode d'authentification SQL Server et Windows", validez et redémarrez votre serveur SQL (du moins le service) comme demandé.
Vous pouvez également créer une base de données à cette étape.

7 - Ajoutez un utilisateur à la racine de votre serveur en vous rendant dans le sous-dossier Sécurité > Connexions et faites un clic droit dans la zone affichant les utilisateurs à droite pui, sélectionnez "Nouvelle Connexion". Saisissez le nom d'utilisateur désiré (ex: toto) et sélectionnez "Authentification SQL Server". Celà vous permettra de vous connectez comme vous le feriez sous MySQL, à savoir avec un nom d'utilisateur et un mot de passe en clair dans votre code. Définissez le mot de passe. Dans le menu de gauche, sélectionnez "Rôles du Serveur" et assignez le nouvel utilisateur à "dbcreator" pour lui donnez le maximum de privilèges. Dans "mappage de l'utilisateur", cochez la base de données sur laquelle votre script aura a effectuer des opérations. Si vous n'avez encore crée aucune base, vous pourrez revenir à cette étape par la suite.
Pointez maintenant sur "Etat" à gauche et vérifiez que votre utilisateur a accès au moteur de base de donner (Octroyer) et qu'il est autorisé à se connecter de façon distante (Connexion: activé).

8 - Vous pouvez passer maintenant aux joies du codage en insérant par exemple le bout de code si après



$link = mssql_connect('MON-PC,port','user','pass',false);

MON-PC: Nom du poste ou adresse IP du serveur
port: numéro relevé dans la base de données
user: utilisateur crée pour l'utilisation du script
pass: mot de passe défini pour l'utilisateur

A ce stade, la connexion devrait fonctionner. Pour le vérifier, créez un fichier ne contenant que cette insctruction.

Dans le cas où la connexion échouerez systématiquement, il s'agit peut être d'un problème de version de votre dll sur laquelle s'appui PHP pour se connecter.
Pour remédier au problème, rendez-vous sur Userscape traitant également des problèmes de connexion et proposant une DLL à jour. téléchargez cette librairie, renommez l'ancienne et copiez-là dans votre répertoire PHP et Windows/System32
Redémarrez votre serveur Apache.

Si le problème persiste, vérifiez que l'utilisateur que vous avez crée a bien les privilèges nécessaires sur le serveur ainsi que sur la base de données. Vérifiez également que la connexion sécurisée dans PHP est bien à Off, sinon PHP traitera la connexion sous le type "Authentification Windows" au lieu de "SQL Server".

Read more...

Problème de chargement de la librairie php_mysql.dll - [Geek Mode=On]

, ,

Toi qui échoue sur ce site, j'ai LA solution pour contourner le problème de chargement de la librairie php_mysql.dll
Pour ma part, j'ai passé une heure à chercher sur le net la solution qui correspondait à mon problème mais sans succès.

Configuration :
Apache 2.2.4
PHP 5.2.3
MySQL 5.0.41



Première piste, vérifier que votre extension_dir pointe bien vers le bon répertoire (ex:c:\php\ext). Pour vérifier, décommenter l'une des autres extensions dans le fichier php.ini (ex:php_mssql.dll).
Si lors du relancement d'Apache, seul un message d'erreur signale un problème avec la librairie php_mysql.dll et non avec php_mssql.dll, c'est que votre extension_dir est bien configuré.

La solution consiste en réalité à :
1 - Copier le fichier php_mysql.dll dans le répertoire C:\windows
2 - Copier libmysql.dll dans C:\windows\system32.
3 - Relancer Apache



Vous pouvez, en théorie, vous passer de copier php_mysql.dll dans le répertoire windows si vous avez ajouté le répertoir PHP à la variable PATH (redémarrage nécessaire).

IMPORTANT:
Il est obligatoire d'utiliser le libmysql.dll fourni dans la distribution de PHP car si vous utilisez celui livré dans le répertoire BIN de votre distribution de MySQL, celà ne fonctionnera pas et provoquera l'affichage du message d'erreur suivant :

unable to load dynamic library ... l'accès à cet emplacement mémoire n'est pas libre



J'espère que celà résoudra votre problème!