jeudi 18 juillet 2013

Déplacer koken à la racine

Actuellement hébergé chez Gandi Simple Hosting, j'ai installé koken dans un sous-dossier de mon site web karlcosse.com
Une fois l'outil appréhendé et publié un peu de contenu, je décide de le basculer à la racine de mon site.

Je prends tous les fichiers du dossier où koken était installé et je les place à la racine.
J'ouvre mon navigateur à la nouvelle adresse de ma galerie photo et surprise… erreur 500.

Première étape, ouvrir le fichier ".htaccess" et remplacer les adresses de l'ancien dossier par le dossier racine. (remplacer les "/dossier" par "", attention à la ligne "RewriteBase /" )
Après avoir parcouru le web et trouvé des réponses sur le dossier storage/cache à vider (qui n'a rien résolu), j'ai finalement trouvé la solution !

Aller dans l'administration gandi de votre SimpleHosting puis videz le cache Varnish + APC !

Votre galerie Koken doit normalement être de retour pour votre plus grand plaisir :)

samedi 24 avril 2010

Internal Server Error 500 - ioncube résolu !

Après 3 jours d'incompréhension, j'ai trouvé mon problème d'Internal Server Error 500.

Voilà ma situation.
J'ai une application web (Php/MySQL) encodée avec ionCube.
Sur un hébergeur et que sur certaines pages, j'ai des erreur 500.
Lorsque je remplace les fichiers encodés par les fichiers sources, aucun problème.

Après avoir épluché des milliers de lignes de code, ligne par ligne, j'ai trouvé la fonction qui posait problème. Elle ressemblait à :

function img($url,$parametres=array()){
...
}
La page qui appelait cette fonction est une page non encodée et ressemblait à :


Surpris par le comportement de l'application, j'essaye de ne faire qu'un appel de fonction.


Et là, la page fonctionne.
C'est donc lorsque j'ai deux ou plusieurs appels à cette fonction, que le serveur apache affiche une erreur 500.
Dans le error_log d'apache j'ai :

[Sat Apr 24 03:11:22 2010] [error] [client X.X.X.X] Premature end of script headers: index.php, referer: http://www.mon-site.com/

Le problème venait de la déclaration de la fonction img(). La valeur par défaut "=array()" provoque une erreur au deuxième appel de cette fonction.

function img($url,$parametres=array()){

J'ai donc remplacé cette déclaration par :

function img($url,$parametres=null){

Maintenant tout fonctionne parfaitement, je peux faire autant d'appels à la fonction img() que je veux.


J'espère vous avoir aidé !


dimanche 28 février 2010

Exporter données HyperFile SQL vers MySQL

Voici le but de ce projet.

J'ai une application windev avec une base HyperFile SQL (non client/serveur).
J'ai un site internet à distance avec une base MySQL.
Je souhaite faire une synchronisation de l'application windev vers la base de données à distance.
A chaque synchronisation, les tables sont remises à zéro sur la base distante.

Comment j'ai fait

Dans l'application windev et plus particulièrement dans l'analyse, j'ai ajouté une connexion MySQL vers la base distante. (Pensez à installer l'accès natif MySQL pour windev)

J'ai fait la synchronisation dans une nouvelle fenêtre.
Ayant une base d'environ 1000 lignes, j'ai trouvé une "astuce" pour réaliser la synchronisation facilement.

Ajouter un tableau d'un fichier Windev voulu, sélectionnez tous les champs (chargé en mémoire !)
Tester la fenêtre, vos enregistrements devraient s'afficher.
Ajoutez ensuite un bouton, nous allons mettre du code dedans...

L'idée est de stocker dans le tableau les enregistrements de votre base HyperFile SQL puis de changer de connexion vers MySQL, de reparcourir le tableau et d'ajouter dans MySQL chaque ligne de ce tableau. Astucieux non ? :D

Dans le code du bouton, avant toute chose, il faut forcer le parcours de toutes les lignes du tableau pour que windev mette en mémoire l'ensemble des lignes.

POUR i = 1 _A_ TABLE_Produits..Occurrence
//Rien
FIN

Ensuite on change de connexion. De HyperFile SQL vers MySQL

HChangeConnexion("*",ConnexionMySQL)
HSupprimeTout(Produits)
HCréationSiInexistant("*")

Je crée également les tables MySQL si elles n'existent pas (hCréationSiInexistant).

Puis on re-parcours le tableau en ajoutant les lignes dans MySQL

POUR i = 1 _A_ TABLE_Produits..Occurrence
HRAZ(Produits)
Produits.id= TABLE_Produits.COL_id[i]
Produits.nom= TABLE_Produits.COL_nom[i]

HAjoute(Produits)
FIN

On peut finalement compter le nombre d'ajout dans MySQL. Soit en ajoutant un compteur lorsque le hAjoute réussit (meilleure fiabilité), soit en faisant :

Info(TABLE_Produits..Occurrence + " produits ajoutés")

Je vous conseille également de vérifier le nombre de lignes dans votre base HyperFile SQL et le nombre de lignes ajoutées afin de contrôler l'intégrité des données.


On lance la synchronisation
Windev a créé dans MySQL les tables nécessaires et à ajouté les enregistrements.

Problème d'accents
Windev fait la synchronisation mais on peut avoir des problèmes d'accents. L'astuce est d'ajouter une information dans les connexions windev. Dans l'onglet "Avancé" de la connexion MySQL (dans votre analyse), mettre dans la zone "Infos. étendues" :

WD Unicode Support = 0;

Conclusion
Ce n'est pas la solution idéale je pense, mais c'est une solution rapide pour transférer les informations de HyperFile SQL vers une base MySQL distante (ou locale).

dimanche 8 novembre 2009

Sendmail PHP sur virutalbox ubuntu

Développant la plus part du temps sous Windows, j'ai besoin de tester mes applications sous unix afin de vérifier que tout fonctionne correctement. Pour cela j'utilise VirtualBox sur lequel j'installe un Ubuntu 9.10.

Voici comment j'ai paramétré mon Ubuntu pour activer l'envoie de mail via PHP.

sudo apt-get install ssmtp
Editer le fichier /etc/ssmtp/ssmtp.conf
sudo vim /etc/ssmtp/ssmtp.conf
(Une fois vim ouvert, pour éditer appuyez sur "i", pour enregistrer et quitter l'édition faire : "Echap puis :wq!")

Voila à quoi ressemble mon fichier ssmtp.conf

root=
mailhub=smtp.mon_fai.fr
rewriteDomain=mon_fai.fr
hostname=localhost
FromLineOverride=YES

Il faut ensuite modifier le php.ini pour lui dire d'utiliser ssmtp.

Editer le fichier /etc/php5/apache2/php.ini
sudo vim /etc/php5/apache2/php.ini
Trouver la ligne "sendmail_path" et mettre
sendmail_path = /usr/sbin/ssmtp -t -i
Enregistrez et quitter.

Il ne reste plus qu'à redémarrer Apache
sudo /etc/init.d/apache2 restart
L'envoi de mail devrait maintenant fonctionner sur votre Ubuntu avec la fonction mail().

dimanche 27 septembre 2009

SPBAS - Down for maintenance

Bonjour,

Il m'arrive d'utiliser dans un cadre professionnel l'outil SPBAS v1.1.0 développé par l'équipe de solidPhp.



En quelques mots, cet outil fait office de boutique et de gestion de licences. Lorsqu'un client passe commande, une clé de licence lui est automatiquement attribuée. Dans l'application qu'elle télécharge vous devez incorporez un peu de code de SPBAS pour qu'il effectuer les vérifications de licence.
Cela permet de facilement gérer les licences pour vos applications web et de vous créer une petite boutique pour vendre vos applications web (Php, Mysql, ...)

Cet outil est customisable a volonté. On peut entre autres, lors de l'installation, changer les noms de dossiers par défaut qui définiront chaque espace. L'espace administration, l'espace client, ...

Ainsi on peut dissimuler son espace administration dans un dossier nommé "odzoaiuzeo90238". Gage de sécurité ? Cela va ralentir les pirates mais ils trouveront bien un autre moyen de s'infiltrer si ils le souhaitent :)

Bref, Nous pouvons donc définir les dossiers à notre guise. Cependant un bug dans le code de SPBAS empèche le site de fonctionner correctement. Le message "Down for maintenance" apparaissant peut importe les modifications dans l'administration.

Pour résoudre ce problème, il faut éditer le fichier suivant :

api/configuration.php

A la ligne 2, on voit qu'il fixe le nom du dossier admin. Or il est écrit en dur "admin".
Notre dossier admin étant "odzoaiuzeo90238", il faut remplacer "admin" par "odzoaiuzeo90238", enregistrer et revenir à l'accueil de votre boutique. (en enlevant le ?task=down_for_maintenance).

Bon courage pour votre boutique avec SPBAS !

Liens interessants :
Documentation sur SPBAS : http://solidphp.com/docs/

Ouverture

Ouverture du blog,

Il sera pour moi le lieu d'essai de la plateforme blogger et entrepôt d'articles intéressants.