execution /usr/local/bin/php -q

execution /usr/local/bin/php -q - PHP - Programmation

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
 

Reply

Marsh Posté le 24-01-2006 à 09:02:46   

Reply

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...[:skeye]


---------------
Can't buy what I want because it's free -
Reply

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

Reply

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? :D


---------------
Can't buy what I want because it's free -
Reply

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

Reply

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?


Message édité par skeye le 24-01-2006 à 10:22:03

---------------
Can't buy what I want because it's free -
Reply

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

Reply

Marsh Posté le 24-01-2006 à 10:39:06    

t'as quoi dans ton include_path actuellement?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 10:41:56    

;include_path = ".:/php/includes"
mais c commenté ...

Reply

Marsh Posté le 24-01-2006 à 10:45:55    

euh...décommente-le et mets au moins "." ;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 10:45:55   

Reply

Marsh Posté le 24-01-2006 à 10:53:05    

non ca ne change rien du tout grrr....
ce n'est pas du a PEAR?

Reply

Marsh Posté le 24-01-2006 à 10:54:15    

je vois pas le rapport avec PEAR...[:autobot]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 10:54:36    

t'as relancé apache?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 11:00:51    

non il faut?

Reply

Marsh Posté le 24-01-2006 à 11:01:42    

Oui, sinon il ne prendra pas en compte tes modifs du php.ini à priori.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 11:09:02    

ben non car c une commande php -q .... donc apache n'a rien a voir

Reply

Marsh Posté le 24-01-2006 à 11:10:23    

Très bonne remarque...[:joce]


---------------
Can't buy what I want because it's free -
Reply

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?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 11:15:52    

oui c'est root

Reply

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/
 
:)


---------------
MZP est de retour
Reply

Marsh Posté le 24-01-2006 à 11:29:41    

Pourtant avec . dans le include_path ça devrait passer...[:urd]
A moins qu'il n'en tienne pas compte en ligne de commande, mais ça me paraitrait bizarre...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 11:31:22    

ouaip....j'ai tout essayé pr le include_path et rien ne fait grrrr

Reply

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.


---------------
MZP est de retour
Reply

Marsh Posté le 24-01-2006 à 11:32:33    

et si tu mets le chemin en dur dans ton script il tourne ou pas?


---------------
Can't buy what I want because it's free -
Reply

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...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-01-2006 à 11:34:51    

aussi. Mais dans ce cas, c'est relatif au repertoire specifié dans le include_path.


---------------
MZP est de retour
Reply

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

Reply

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? [:urd]


---------------
Can't buy what I want because it's free -
Reply

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.


---------------
MZP est de retour
Reply

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...

Reply

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? [:urd]


 
./api_tools.php passe si tu mets le /home/site/www/api/ en include_path je suppose.


---------------
MZP est de retour
Reply

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à...


---------------
Can't buy what I want because it's free -
Reply

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.


---------------
MZP est de retour
Reply

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!!!
 

Reply

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 :
  1. 10,25,40,55 0,1,3-23 * * * /home/site/www/admin/bce_force.sh


crontab édité
 
Ce bce_force.sh fait:
 

Code :
  1. cd /home/site/www/admin/
  2. /usr/local/bin/php -q bce_force.php


 
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.


Message édité par cinocks le 24-01-2006 à 11:58:05

---------------
MZP est de retour
Reply

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?

Reply

Marsh Posté le 24-01-2006 à 11:57:26    

oui pardon, copier/coller trop rapide. :D


---------------
MZP est de retour
Reply

Marsh 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

Reply

Marsh Posté le 24-01-2006 à 12:01:51    

et en mettant le chemin absolu du script dans le sh.


---------------
MZP est de retour
Reply

Marsh 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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed