execution /usr/local/bin/php -q - PHP - Programmation
Marsh Posté le 24-01-2006 à 09:48:37
Bah lis les messages...il n'arrive pas à ouvrir ton fichier api_tools.php, regarde s'il est bien au bon endroit et s'il est bien accessible par l'utilisateur qui exécute le script...
Marsh Posté le 24-01-2006 à 09:53:53
oui les fichiers sont au bon endroits et ils sont accessibles par tous...car comme je l'ai dis, lorsque j'ecute bce_force dans son repertoire (php bce_force.php) ca fonctionne mais quand je l'execute a partir d'un autre rep ca ne fonction pas
Marsh Posté le 24-01-2006 à 09:56:57
...et si tu rajoutes cd /home/site/www/admin/; à ta ligne dans le crontab, ça marche?
Marsh Posté le 24-01-2006 à 10:19:17
non ca ne fonctionne pas .... mais avant l'installation de php5 ca fonctionnait comme ca....c'est qu'il doit falloir configurer uelque chose
Marsh Posté le 24-01-2006 à 10:21:31
Ajouter le répertoire de api_tools (ou celui de ton script?) dans l'include_path dans ton php.ini, peut-être, alors?
Marsh Posté le 24-01-2006 à 10:32:14
ben il y a plusieurs fichiers include dans bce_force, je ne peux donc pas ajouter tous les repertoires ou se trouvent les php d'include
Marsh Posté le 24-01-2006 à 10:39:06
t'as quoi dans ton include_path actuellement?
Marsh Posté le 24-01-2006 à 10:45:55
euh...décommente-le et mets au moins "."
Marsh Posté le 24-01-2006 à 10:53:05
non ca ne change rien du tout grrr....
ce n'est pas du a PEAR?
Marsh Posté le 24-01-2006 à 10:54:15
je vois pas le rapport avec PEAR...
Marsh Posté le 24-01-2006 à 10:54:36
t'as relancé apache?
Marsh Posté le 24-01-2006 à 11:01:42
Oui, sinon il ne prendra pas en compte tes modifs du php.ini à priori.
Marsh Posté le 24-01-2006 à 11:09:02
ben non car c une commande php -q .... donc apache n'a rien a voir
Marsh Posté le 24-01-2006 à 11:10:23
Très bonne remarque...
Marsh Posté le 24-01-2006 à 11:12:11
Quand tu le lances à la main tu utilises bien le même utilisateur que celui pour lequel tu as mis la ligne dans le cron?
Marsh Posté le 24-01-2006 à 11:28:17
je dirais chemin relatif et chemin absolu. Il tente de chercher ../api/api_tools.php depuis la racine.
J'imagine que le chemin desiré est /home/site/www/api/
Passe en absolu ou positionne toi sur le repertoire de /home/site/www/admin/
Marsh Posté le 24-01-2006 à 11:29:41
Pourtant avec . dans le include_path ça devrait passer...
A moins qu'il n'en tienne pas compte en ligne de commande, mais ça me paraitrait bizarre...
Marsh Posté le 24-01-2006 à 11:31:22
ouaip....j'ai tout essayé pr le include_path et rien ne fait grrrr
Marsh Posté le 24-01-2006 à 11:32:16
ca devrait marcher dans le include path. Mais il faut bien modifier le script pour virer le ../api/api_tools.php et mettre api_tools.php tout court.
Marsh Posté le 24-01-2006 à 11:32:33
et si tu mets le chemin en dur dans ton script il tourne ou pas?
Marsh Posté le 24-01-2006 à 11:33:39
cinocks a écrit : ca devrait marcher dans le include path. Mais il faut bien modifier le script pour virer le ../api/api_tools.php et mettre api_tools.php tout court. |
Il peut aussi mettre le répertoire de son script dans le path, s'il utilise des chemins relatifs...
Marsh Posté le 24-01-2006 à 11:34:51
aussi. Mais dans ce cas, c'est relatif au repertoire specifié dans le include_path.
Marsh Posté le 24-01-2006 à 11:35:32
c a dire mettre '/home/site/www/admin/' dans le include_path? ca ne fonctionne pas non plus
Marsh Posté le 24-01-2006 à 11:36:19
tout à fait...m'enfin normalement le '.' devrait être le répertoire du script, donc en relatif ça devrait passer avec juste ça...non?
Marsh Posté le 24-01-2006 à 11:36:26
non, je n'ai pas du etre clair. Remplace ton chemin relatif dans ton script par le chemin absolu et vois ce que ca donne.
Marsh Posté le 24-01-2006 à 11:37:28
ah ok...ben le probleme c ke les include font appelle a d'autres include et donc il faut remplacer dans tous le site....et il y en a bocoup...
Marsh Posté le 24-01-2006 à 11:37:57
skeye a écrit : tout à fait...m'enfin normalement le '.' devrait être le répertoire du script, donc en relatif ça devrait passer avec juste ça...non? |
./api_tools.php passe si tu mets le /home/site/www/api/ en include_path je suppose.
Marsh Posté le 24-01-2006 à 11:38:17
x_bce a écrit : ah ok...ben le probleme c ke les include font appelle a d'autres include et donc il faut remplacer dans tous le site....et il y en a bocoup... |
Nn, mais juste pour vérifier si passer en absolu résoud bien le problème pour le premier, déjà...
Marsh Posté le 24-01-2006 à 11:38:26
x_bce a écrit : ah ok...ben le probleme c ke les include font appelle a d'autres include et donc il faut remplacer dans tous le site....et il y en a bocoup... |
Essaye dejà pour voir si c'est un probleme de chemin.
Marsh Posté le 24-01-2006 à 11:41:50
effectivement si je mets:
<? require_once('/home/site/www/api/api_tools.php'); ?>
au lieu de :
<? require_once(../api/api_tools.php'); ?>
ca me reporte l'erreur a l'include d'apres!!!
Marsh Posté le 24-01-2006 à 11:45:56
donc probleme de path. Soit il te faut voir l'include_path, soit modifier tous les scripts.
Soit la jouer simple. Puisque tu passes par une crontab qui lance ton php, pourquoi ne pas mettre un script intermediaire, un sh.
La crontab appelle un /home/site/www/admin/bce_force.sh.
Code :
|
crontab édité
Ce bce_force.sh fait:
Code :
|
Le script php sera lancé depuis le bon repertoire et les chemins relatifs devraient fonctionner.
ne pas oublier de donner les droits en execution pour le script bce_force.sh.
Marsh Posté le 24-01-2006 à 11:54:27
euh dans le cronc plutot:
10,25,40,55 0,1,3-23 * * * /home/site/www/admin/bce_force.sh
non?
Marsh Posté le 24-01-2006 à 11:57:26
ReplyMarsh Posté le 24-01-2006 à 12:00:36
bon ben le sh s'est lancé mais la commande
/usr/local/bin/php -q bce_force.php apparement na pas tourné.
J'ai fai un mkdir en fin de script pour voir si effectivement il a vait tourné et oui... le rep s'est créé mais le lancement de bce_force n'a pas marché........jvais pas y arriver.....arf
Marsh Posté le 24-01-2006 à 12:01:51
ReplyMarsh Posté le 24-01-2006 à 12:04:14
en fait kan je lance le script a la main il fonctionne mais c'est kan il est lancé de la crontab kil ne fonctionne pas et il est en 755
Marsh Posté le 24-01-2006 à 09:02:46
Bonjour,
J'ai un probleme sur mon site:
L'execution du script via la crontable:
10,25,40,55 0,1,3-23 * * * /usr/local/bin/php -q /home/site/www/admin/bce_force.php
Focntionnait bien.
On m'a réinstallé php5 et l'execution du script via la crontable ne fonctionne plus.
Il doit y avoir un probleme de droits qu'il n'y avait pas avant.
Lors que je lance cette commande depuis le rep 'admin' pas de souci mais si je la lance depuis '/' ou autre part, il y a des erreurs:
Warning: main(../api/api_tools.php): failed to open stream: No such file or directory in /home/site/www/admin/bce_force.php on line 2
Fatal error: main(): Failed opening required '../api/api_tools.php' (include_path='.usr/local/lib/php') in /home/site/www/admin/bce_force.php on line 2
Que dois je configurer ou modifier?
qu'est ce que PEAR?
merci d'avance
Brice