Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Executer un script en dehors du site

Aller à la page 1, 2, 3, 4  Suivante
Poster un nouveau sujet Imprimer cette discussion    Forum -> Administration d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Mer Mar 15, 2006 22:12    Sujet du message: Executer un script en dehors du site

Bonjour,

Voila, je souhaite exécuter un script en-dehors des dossiers de mon site.
C'est un cron qui lance une tâche (un php) pour exécuter certaines opérations.

Faut-il qu'il soit obligatoirement dans mon dossier du site ? Confused

ah oui...
j'ai un dédié donc accès ssh.

Ce que je voudrais c'est créer un dossier spécifique pour les tâche php à exécuter en cron, qui n'a rien a voir avec le reste. Est-ce que le php sera exécuté ? ou faut-il paramètrer apache ou php de tel sorte qu'il reconnaisse le dossier ?

J'espère que vous m'aurez compris. Confused Confused
 
thierry8 Visiter le site web du posteur
nuxvomica
WRInaute discret
WRInaute discret

Inscrit le: 03 Déc 2005
Messages: 76

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 0:07    Sujet du message: Executer un script en dehors du site

Bein pas sur que le php s'execute hors de l'arbo du site (quoiqu'en dédié, tu fais bien ce que tu veux non? Mais question sécurité, ça me semble un peu limite). Sinon, pourquoi pas tout simplement un sous dossier du site avec .htaccess qui empeche tout accès via le web?
 
nuxvomica Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 0:11    Sujet du message: Executer un script en dehors du site

nuxvomica a écrit:
Bein pas sur que le php s'execute hors de l'arbo du site (quoiqu'en dédié, tu fais bien ce que tu veux non? Mais question sécurité, ça me semble un peu limite). Sinon, pourquoi pas tout simplement un sous dossier du site avec .htaccess qui empeche tout accès via le web?

Pourquoi limite niveau sécurité ?
Je suis preneur pour le .htaccess qui empêche tout accès venant du web. Wink
 
thierry8 Visiter le site web du posteur
zimounet
WRInaute accro
WRInaute accro

Inscrit le: 08 Nov 2004
Messages: 1799
Localisation: Physiquement ou mentalement?

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 0:54    Sujet du message: Executer un script en dehors du site

message supprimé

Dernière édition par zimounet le Jeu Avr 06, 2006 4:38; édité 1 fois
 
thierry8 Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 0:57    Sujet du message: Executer un script en dehors du site

zimounet a écrit:
Si c'est un cron programmé sur ton serveur, et qui execute un script de ton serveur, je ne vois pas le probleme...

par rapport à quoi ? Confused
 
thierry8 Visiter le site web du posteur
zimounet
WRInaute accro
WRInaute accro

Inscrit le: 08 Nov 2004
Messages: 1799
Localisation: Physiquement ou mentalement?

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 1:10    Sujet du message: Executer un script en dehors du site

message supprimé

Dernière édition par zimounet le Jeu Avr 06, 2006 4:39; édité 1 fois
 
thierry8 Visiter le site web du posteur
nuxvomica
WRInaute discret
WRInaute discret

Inscrit le: 03 Déc 2005
Messages: 76

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 1:54    Sujet du message: Executer un script en dehors du site

thierry8 a écrit:
Pourquoi limite niveau sécurité ?

Autoriser l'execution de scripts dans l'arbo de ton serveur, hors répertoires web, me semble douteux. On regroupe en général les cgi dans un seul rep autorisé par exemple. Enfin bon, je suis loin d'être pointu sur le sujet, c'est juste une hypothèse.
 
nuxvomica Visiter le site web du posteur
Robinson
WRInaute accro
WRInaute accro

Inscrit le: 26 Oct 2005
Messages: 1383

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 2:23    Sujet du message: Executer un script en dehors du site

euuuh pour ma part, je ne vois pas en quoi cela peut poserait problème.
Au contraire, tous mes crons sont dans un répertoire différent de l'arborescence du site ! Ainsi pas besoin de placer un .htaccess, ceux là ne sont pas accessibles.

Exemple :
/var/www/site1 => répertoire du site www.domaine.com
/var/www/cronsite1 => répertoire des crons
 
Robinson
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 9:15    Sujet du message: Executer un script en dehors du site

Merci Robinson.

Une question, lorsque tu créé manuellement le dossier cronsite1, rajoute tu quelque chose dans le httpd.conf, au dans un autre fichier de config. pour que les scripts se trouvant à l'intérieure soit exécuté ?
 
thierry8 Visiter le site web du posteur
zimounet
WRInaute accro
WRInaute accro

Inscrit le: 08 Nov 2004
Messages: 1799
Localisation: Physiquement ou mentalement?

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 9:19    Sujet du message: Executer un script en dehors du site

message supprimé

Dernière édition par zimounet le Jeu Avr 06, 2006 4:39; édité 1 fois
 
thierry8 Visiter le site web du posteur
Bourriquet
WRInaute passionné
WRInaute passionné

Inscrit le: 19 Sep 2005
Messages: 632

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 9:46    Sujet du message: Executer un script en dehors du site

Il est fortement déconseillé de mettre un script destiné à être un cron dans l'arborescence de ton site...

Tout d'abord, il faut bien comprendre une chose: dans ton script cron, apache n'intervient nulle part !

Ton script cron risque d'avoir besoin de droit d'accès à certains fichiers (suivant ce que fait exactement le cron) et le mettre sous l'arborescence apache présente le risque que :
1- quelqu'un le sollicite alors que tu ne le veux pas
2- quelqu'un trouve une faille dans ton script qui risque alors de devenir un vrai danger publique sur ton serveur.
3- si tu le fais passer par apache, lorsque tu as un plantage de Apache, ton cron ne marche plus.

Pour exécuter un cron en PHP, tu n'as même pas besoin de Apache. J'en avais parlé dans un post préccédent, mais je le retrouve plus, alors je vais me la refaire Wink

PHP c'est un programme qui va interprêter du code que tu lui fournis, soit par le biais d'un fichier, soit même à la volée.
On l'utilise surtout avec Apache car il permet de créer des pages dynamiques, et qu'il dispose d'une floppée de fonctions bien utiles pouir une application en mode cgi.

Dans ta configuration Apache, pour un serveur qui supporte les pages Web en PHP, la seule chose que tu lui dis, c'est :

"lorsqu'il y a une page qui porte l'extension '.php', je la donne à l'interprêteur, qui fait son taff, et me renvoie le résultat, que je ferai suivre à l'internaute".

Bref. PHP peut être utilisé indépendamment de Apache. Comment ?

Puisque Apache n'est pas là pour dire à PHP d'interprêter un fichier, tu dois utiliser la syntaxe prévue sous Linux pour ce genre de cas: dans le fichier, donner le chemin vers l'interprêteur du script.

Par exemple si tu faisais un script en SH, ça donnerait :
Code:

#!/bin/sh


en première ligne, car, le programme qui interprête le SH se trouve dans /bin et est SH.

Pour PHP, c'est génériquement :
Code:
#!/usr/local/bin/php


Le "#!" ça veut dire "Attention, voici le chemin vers l'interprêteur.

Par contre, sur ton serveur tu dois avoir installé un PHP qui est compilé pour optimiser les échanges avec Apache. Donc si tu lances ton script sous SSH, la sortie de ton script sera formaté avec des headers html

Toi tu n'en as pas besoin, car tu le lance en mode console. Donc tu vas lui dire gentillement de se la fermer Smile Comment ? En lui précisant l'option "-q" qui permet de le lancer en "quiet mode".

Ta première ligne dans ton php devient :
Code:
#!/usr/local/bin/php -q


Ensuite, dans ton code, tu précise bien les balises "<?php" et "?>" là où il y a du code à interprêter. En dehors, le reste sera affiché en tant que texte.

Ensuite, pour le passage de variables au script, tu as deux globales à connaitres :

$argc : qui contient le nombre d'argument passé au script.
$argv : un tableau qui te donne le nom du script puis les différents arguments.

Le premier argument est $argv[1] .

Ensuite, il te reste une seule manip à faire: donner les bons droits à ton script. Je te laisse gérer ça, sauf que tu dois absolument lui donner le droit d'exécution :

Code:
chmod +x script.php


Et vala c'est tout bon Wink
 
Bourriquet Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 10:45    Sujet du message: Executer un script en dehors du site

..
Merci pour cette explication.

Dans mon cas il s'agit d'un script en PHP.

Je devrais donc mettre:
Code:

#!/usr/local/bin/php -q
<?php

/* mon script */

/* rapport par mail */

?>

Le -q permet de ne pas renvoyer quelque chose, si j'ai bien compris.
En revanche, le chemin /usr/local/bin/ est bien existant, mais je n'ai pas de php à l'intérieur. C'est normal !?

Je ne passe aucune variable (normalement), je n'aurais donc pas besoin de $argc et de $argv.
Mais peut tout de même m'expliquer comment passer une variable, parce que j'avoue, ne pas avoir compris comment les utiliser.

C'est un script qui intervient sur toutes les bases de données mysql, de ce fait il possède les droits root.

.. .. .. .. ..
En revanche, sous Plesk, il y a déjà des cron d'établis, en voici un exemple:
Code:
/opt/psa/admin/bin/php /opt/psa/admin/plib/report/autoreport.php --auto monthly >/dev/null 2>&1


Dois-je également mettre le >/dev/null 2>&1 ?
A quoi cela correspond ?

Si je comprends cette tâche, par rapport à ce que tu m'as dis le début permettrait d'indiqué le chemin pour interpréter le script. (Plesk fonctionne sous PHP 5). Ensuite, la ligne d'après, le chemin du script, puis derrière, quelque chose d'autre... Confused
 
thierry8 Visiter le site web du posteur
Bourriquet
WRInaute passionné
WRInaute passionné

Inscrit le: 19 Sep 2005
Messages: 632

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 11:01    Sujet du message: Executer un script en dehors du site

L'option -q permet d'être en quiet mode : c'est à dire d'afficher quelque chose si tu fais un echo, mais de ne pas envoyer d'entête html.

Le /usr/local/bin/php est un emplacement qu'on retrouve souvent sur les distributions linux, mais ce n'est une règle générale. Pour savoir où se trouve ton exécutable, soit tu fais un phpinfo(), soit tu fais un whereis en ligne de commande :

Code:
 [Bourriquet@sms-gift.com] whereis php
php: /usr/local/bin/php /usr/local/lib/php /usr/local/lib/php.ini


Le /dev/null n'est pas obligatoire.

Pour ton rapport tu te l'envoie par mail, mais je te conseille tout de même de faire un petit log au cas ou y est un plantage.

Ca peut être fait très simplement comme ça :

Code:
/chemin/vers/ton/script.php >> fichier_log.txt


Pour le passage d'argument c'est simple :

Code:
/chemin/vers/ton/script.php pouet prout biloute NuNux "et plein d'autre choses possible encore"


$argv[0] contiendra : /chemin/vers/ton/script.php
$argv[1] contiendra : pouet
$argv[2] contiendra : prout
$argv[3] contiendra : biloute
$argv[4] contiendra : NuNux
$argv[5] contiendra : et plein d'autre choses possible encore

Après c'est à toi en PHP de faire des traitements différents en fonction des arguments.
 
Bourriquet Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 11:33    Sujet du message: Executer un script en dehors du site

Merci, merci, merci !!!

Concernant le fichier .txt, il sera créé je suppose à la racine tu dossier du script courant ?

Une question encore: (confirmation de ma bonne compréhension Confused )
Finallement je met le #!/usr/local/bin/php -q au début de mon fichier php. Et ma tâche cron serait :
/chemin/vers/ton/script.php var1 >> fichier_log.txt

Et mon fichier php:
Code:
#!/usr/bin/php -q
<?php

/* mon script */

/* rapport par mail */

?>

Tout somplement ?

Merci beaucoup à toi ! Tu m'as été d'une grande aide sur bien des points.

note: sur plesk l'emplacement est donc là: /usr/bin/php
 
thierry8 Visiter le site web du posteur
cardoule
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 19 Fév 2004
Messages: 234

URL permanente de ce messagePosté le : Jeu Mar 16, 2006 11:36    Sujet du message: Executer un script en dehors du site

Robinson a écrit:
euuuh pour ma part, je ne vois pas en quoi cela peut poserait problème.
Au contraire, tous mes crons sont dans un répertoire différent de l'arborescence du site ! Ainsi pas besoin de placer un .htaccess, ceux là ne sont pas accessibles.

Exemple :
/var/www/site1 => répertoire du site www.domaine.com
/var/www/cronsite1 => répertoire des crons

AMHA, il y a erreur, là (hum, au moins dans les hébergements mutualisés où www est le répertoire de base, mais peut-être en dédié tu peux gérer ça différemment)
en effet, au moins dans ce cas, il suffit de -http://ton-domaine.tld/cronsite1 pour avoir l'index de tous les fichiers présents dans cronsite1... et en faire à peu près ce que l'on veut Cool ... si aucun .htaccess ne vient en interdire ni l'accès ni l'indexation !
 
cardoule Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Administration d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 4 - Aller à la page 1, 2, 3, 4  Suivante
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Définitions :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort