| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté 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 ?
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.  |
|
| |
|
 |
nuxvomica WRInaute discret

Inscrit le: 03 Déc 2005 Messages: 76
|
Posté 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? |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté 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.  |
|
| |
|
 |
zimounet WRInaute accro

Inscrit le: 08 Nov 2004 Messages: 1799 Localisation: Physiquement ou mentalement?
|
Posté 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 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté 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 ?  |
|
| |
|
 |
zimounet WRInaute accro

Inscrit le: 08 Nov 2004 Messages: 1799 Localisation: Physiquement ou mentalement?
|
Posté 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 |
|
| |
|
 |
nuxvomica WRInaute discret

Inscrit le: 03 Déc 2005 Messages: 76
|
Posté 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. |
|
| |
|
 |
Robinson WRInaute accro

Inscrit le: 26 Oct 2005 Messages: 1383
|
Posté 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 |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté 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é ? |
|
| |
|
 |
zimounet WRInaute accro

Inscrit le: 08 Nov 2004 Messages: 1799 Localisation: Physiquement ou mentalement?
|
Posté 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 |
|
| |
|
 |
Bourriquet WRInaute passionné

Inscrit le: 19 Sep 2005 Messages: 632
|
Posté 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
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 :
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 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  |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté 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...  |
|
| |
|
 |
Bourriquet WRInaute passionné

Inscrit le: 19 Sep 2005 Messages: 632
|
Posté 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. |
|
| |
|
 |
thierry8 WRInaute accro

Inscrit le: 11 Juil 2005 Messages: 3252
|
Posté 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 )
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 |
|
| |
|
 |
cardoule WRInaute occasionnel

Inscrit le: 19 Fév 2004 Messages: 234
|
Posté 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 ... si aucun .htaccess ne vient en interdire ni l'accès ni l'indexation ! |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
Définitions :
|
|