OVH Community, votre nouvel espace communautaire.

Tache planifiée sur mutu


phil56
04/01/2010, 16h57
Citation Envoyé par Sébastien Ferry
Code:
user@ssh1:~$ which php5
user@ssh1:~$ php5
-ovh: php5: command not found

user@ssh1:~$ which php
/usr/local/bin/php


user@ssh1:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/userx.xxx/bin

Merci, mains je ne comprends pas trop pourquoi le script ne marche pas.

Code:
for TEST_PHP_BIN in php5 php; do
  if which $TEST_PHP_BIN >/dev/null 2>/dev/null; then
    PHP_BIN=`which $TEST_PHP_BIN`
    break
  fi
done
si je comprend bien l'objectif de ces lignes on recherche l'existence
et le chemin de php5 puis php si php5 n'existe pas.
Visiblement ça ne marche pas car à la sortie de cette boucle PHP_BIN est
toujours vide...

Bref je vais tester en remplaçant php5 par php.ORIG.5 pour voir ça marche
sinon je forcerais PHP à
Code:
/usr/local/bin/php.ORIG.5
ken@vo
et encore merci

Sébastien Ferry
04/01/2010, 14h04
Code:
user@ssh1:~$ which php5
user@ssh1:~$ php5
-ovh: php5: command not found

user@ssh1:~$ which php
/usr/local/bin/php


user@ssh1:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/userx.xxx/bin

phil56
04/01/2010, 13h58
Merci Sébastien

et

Code:
which php5
which php
ca donne quoi SVP ?

merci
ken@vo
Phil

Sébastien Ferry
04/01/2010, 13h41
Sur un 90plan, tu as droit à tous ces PHP:
Code:
php
php                   php.ORIG.4.4.4        php.ORIG.5.2.1
php.4-test            php.ORIG.4.4.4_new    php.ORIG.5.2.10
php.BETA              php.ORIG.4.4.4_old    php.ORIG.5.2.11
php-config            php.ORIG.4.4.7        php.ORIG.5.2.3
phpdoc                php.ORIG.4.4.8        php.ORIG.5.2.3b
phpextdist            php.ORIG.4.4.9-pcre7  php.ORIG.5.2.4-pgsql
phpize                php.ORIG.5            php.ORIG.5.2.5
php.ORIG              php.ORIG.5.1.2        php.ORIG.5.2.6
php.ORIG.4            php.ORIG.5.1.4        php.ORIG.5.2.9
php.ORIG.4.3.9        php.ORIG.5.1.5        php.ORIG.5.3.0
php.ORIG.4.4.2        php.ORIG.5.1.5_new    php.ORIG.5.3.1
php.ORIG.4.4.3        php.ORIG.5.1.5_old    php.TEST.5
which php.ORIG.5.1.2
/usr/local/bin/php.ORIG.5.1.2
Code:
ls -l  /usr/local/bin/php*
lrwxrwxrwx 1 root ftp        23 2010-01-04 13:09 /usr/local/bin/php -> /usr/local/bin/php.ORIG*
-rwxr-xr-x 1 root ftp   9423008 2006-08-04 16:07 /usr/local/bin/php.4-test*
lrwxrwxrwx 1 root ftp        10 2010-01-04 12:13 /usr/local/bin/php.BETA -> php.ORIG.5*
-rwxr-xr-x 1 root ftp      1232 2007-10-16 15:37 /usr/local/bin/php-config*
-rwxr-xr-x 1 root ftp      1312 2006-03-21 18:34 /usr/local/bin/phpdoc*
-rwxr-xr-x 1 root ftp       593 2006-03-09 04:13 /usr/local/bin/phpextdist*
-rwxr-xr-x 1 root ftp      4010 2007-10-16 15:37 /usr/local/bin/phpize*
lrwxrwxrwx 1 root ftp        25 2010-01-04 12:13 /usr/local/bin/php.ORIG -> /usr/local/bin/php.ORIG.4*
lrwxrwxrwx 1 root ftp        35 2010-01-04 12:13 /usr/local/bin/php.ORIG.4 -> /usr/local/bin/php.ORIG.4.4.9-pcre7*
-rwxr-xr-x 1 root ftp   3939660 2006-03-09 04:14 /usr/local/bin/php.ORIG.4.3.9*
-rwxr-xr-x 1 root ftp   4332172 2006-08-01 15:47 /usr/local/bin/php.ORIG.4.4.2*
-rwxr-xr-x 1 root ftp   4287160 2006-08-07 14:10 /usr/local/bin/php.ORIG.4.4.3*
-rwxr-xr-x 1 root ftp   4274940 2007-03-16 16:49 /usr/local/bin/php.ORIG.4.4.4*
-rwxr-xr-x 1 root ftp   4287160 2006-11-22 11:46 /usr/local/bin/php.ORIG.4.4.4_new*
-rwxr-xr-x 1 root ftp   4287160 2006-11-15 10:23 /usr/local/bin/php.ORIG.4.4.4_old*
-rwxr-xr-x 1 root ftp   4230176 2007-10-16 15:37 /usr/local/bin/php.ORIG.4.4.7*
-rwxr-xr-x 1 root ftp   4252096 2008-01-22 15:13 /usr/local/bin/php.ORIG.4.4.8*
-rwxr-xr-x 1 root root  4371376 2008-09-05 14:35 /usr/local/bin/php.ORIG.4.4.9-pcre7*
lrwxrwxrwx 1 root ftp        15 2010-01-04 12:13 /usr/local/bin/php.ORIG.5 -> php.ORIG.5.2.11*
-rwxr-xr-x 1 root ftp   6940140 2006-07-21 17:33 /usr/local/bin/php.ORIG.5.1.2*
-rwxr-xr-x 1 root ftp   8773004 2006-08-01 16:17 /usr/local/bin/php.ORIG.5.1.4*
-rwxr-xr-x 1 root ftp   8785452 2006-11-22 12:17 /usr/local/bin/php.ORIG.5.1.5*
-rwxr-xr-x 1 root ftp   8785452 2006-11-22 11:46 /usr/local/bin/php.ORIG.5.1.5_new*
-rwxr-xr-x 1 root ftp   8785452 2006-11-15 10:23 /usr/local/bin/php.ORIG.5.1.5_old*
-rwxr-xr-x 1 root ftp  10811612 2007-03-16 16:59 /usr/local/bin/php.ORIG.5.2.1*
-rwxr-xr-x 1 root root 10223920 2009-07-23 16:13 /usr/local/bin/php.ORIG.5.2.10*
-rwxr-xr-x 1 root root 10225240 2009-10-26 16:40 /usr/local/bin/php.ORIG.5.2.11*
-rwxr-xr-x 1 root ftp   9977412 2007-07-03 15:08 /usr/local/bin/php.ORIG.5.2.3*
-rwxr-xr-x 1 root ftp   9977412 2007-07-24 18:40 /usr/local/bin/php.ORIG.5.2.3b*
-rwxr-xr-x 1 root ftp  10130404 2007-10-19 10:34 /usr/local/bin/php.ORIG.5.2.4-pgsql*
-rwxr-xr-x 1 root ftp  10165860 2008-01-22 15:13 /usr/local/bin/php.ORIG.5.2.5*
-rwxr-xr-x 1 root root 10191684 2008-05-23 11:28 /usr/local/bin/php.ORIG.5.2.6*
-rwxr-xr-x 1 root root 10212848 2009-03-30 16:03 /usr/local/bin/php.ORIG.5.2.9*
-rwxr-xr-x 1 root root 12258460 2009-07-23 16:14 /usr/local/bin/php.ORIG.5.3.0*
-rwxr-xr-x 1 root root 12280068 2009-12-03 15:21 /usr/local/bin/php.ORIG.5.3.1*
lrwxrwxrwx 1 root ftp        14 2010-01-04 12:13 /usr/local/bin/php.TEST.5 -> php.ORIG.5.3.1*

phil56
04/01/2010, 13h15
Bonjour après quelques tests ce que j'ai constaté et fait.

Pas simple d'ailleurs les tests vu que je suis sur un hébergement perso donc sans ssh
obligé d'attendre que le cron re-exécute le script (toutes les heures :-| )


- la commande which visiblement ne fonctionne pas ou alors
chez ovh le binaire php porte un nom particulier (la suite tend à le démontrer)

- j'ai donc mis en dur dans le script le chemin vers php
Code:
for TEST_PHP_BIN in php5 php; do
  if which $TEST_PHP_BIN >/dev/null 2>/dev/null; then
    PHP_BIN=`which $TEST_PHP_BIN`
    break
  fi
done

#force valeur ovh
PHP_BIN="/usr/local/bin/php.ORIG.5.2.11"
j'ai pas eu le temps de tester avec un valeur plus générique.

- lorsque on execute php a la ligne de commande le résultat commence
par un entete genre :
Code:
X-Powered-By: PHP/5.2.10...
ce qui pose problème pour l'interprétation du résultat
j'avais cru comprendre qu'en ajoutant le paramètre -q cet entête était
supprimé. Malheureuse lorsque je le positionne la commande échoue, le
script s'arrête sans signaler la cause.

Dans le script on fait appel deux fois à la commande php la première pour déterminer le "TOKEN_AUTH" de Piwik. Le deuxième appel utilise cette valeur
pour lancer l'archivage à proprement parle. Comme la valeur retournée pas le
premier appel n'est pas correcte le deuxième ne peut s'exécuter.

Pour contourné le pb j'ai la encore mis en dur le "TOKEN_AUTH" dans le script.
Code:
CMD_TOKEN_AUTH="$PHP_BIN $PIWIK_PATH -- module=API&method=UsersManager.getTokenAuth&userLogin=$PIWIK_SUPERUSER&md5Password=$PIWIK_SUPERUSER_MD5_PASSWORD&format=php&serialize=0"
TOKEN_AUTH=`$CMD_TOKEN_AUTH`

TOKEN_AUTH="9cb3d507bfxxxxxxxxxxxxxx"
On trouve cette valeur dans la page API de son Piwik...

Pour le moment il ne s'agit ici que de contournements mais ça
fonctionne si quelqu'un connait une solution un peu plus propre...


ken@vo
Phil

phil56
03/01/2010, 11h04
Bonjour,

j'utilise le même script et j'ai le même PB as tu trouvé une solution
Merci d'avance

ken@vo
Phil

birdyman
16/09/2009, 18h11
Le script semble se lancer ... ca avance, mais la ligne que j'ai rajouté :
Code:
PHP_BIN="/usr/local/bin/php.ORIG.5"
doit poser d'autres problèmes...

voila ce que j'obtiens en lancant la commande :
/bin/bash /home/login/www/piwik/misc/cron/archive.sh
Code:
X-Powered-By: PHP/5.2.10
Set-Cookie: PHPSESSID=330bc9dc07c7494b425e428f55b3a90f; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/xml;charset=utf-8




X-Powered-By: PHP/5.2.10
Set-Cookie: PHPSESSID=16e8702d7786805c3d77dfe470e74cde; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/xml;charset=utf-8




X-Powered-By: PHP/5.2.10
Set-Cookie: PHPSESSID=db32f4c157620fc3f490a53e09c0cabe; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/xml;charset=utf-8



Si quelqu'un à une idée je suis preneur.

pm2036
16/09/2009, 14h02
J'ai édité ma réponse pendant certainement que tu postais

birdyman
16/09/2009, 14h00
Merci pour ta réponse, ca semble logique maintenant que tu le dis
Je creuse de ce côté là.

Voici le contenu du fichier archive.sh :
Code:
#!/bin/bash -e

# Description
# This script automatically fetches the Super User token_auth 
# and triggers the archiving for all websites for all periods.
# This ensures that all reports are pre-computed and Piwik renders very fast. 

# Documentation
# Please check the documentation on http://piwik.org/docs/setup-auto-archiving/

# How to setup the crontab job?
# Add the following lines in your crontab file, eg. /etc/cron.d/piwik-archive
#MAILTO="youremail@example.com"
#5 0 * * * www-data /path/to/piwik/misc/cron/archive.sh > /dev/null

# Other optimization for high traffic websites
# You may want to override the following settings in config/config.ini.php (see documentation in config/config.ini.php)
# [General]
# time_before_archive_considered_outdated = 3600
# enable_browser_archiving_triggering = false

PHP_BIN=`which php5 2>/dev/null`
if test -z $PHP_BIN; then
  PHP_BIN=`which php`
fi
PIWIK_CRON_FOLDER=`dirname $(readlink -f ${0})`
PIWIK_PATH="$PIWIK_CRON_FOLDER"/../../index.php
PIWIK_CONFIG="$PIWIK_CRON_FOLDER"/../../config/config.ini.php

PIWIK_SUPERUSER=`sed '/^\[superuser\]/,$!d;/^login[ \t]*=[ \t]*"*/!d;s///;s/"*[ \t]*$//;q' $PIWIK_CONFIG`
PIWIK_SUPERUSER_MD5_PASSWORD=`sed '/^\[superuser\]/,$!d;/^password[ \t]*=[ \t]*"*/!d;s///;s/"*[ \t]*$//;q' $PIWIK_CONFIG`

CMD_TOKEN_AUTH="$PHP_BIN $PIWIK_PATH -- module=API&method=UsersManager.getTokenAuth&userLogin=$PIWIK_SUPERUSER&md5Password=$PIWIK_SUPERUSER_MD5_PASSWORD&format=php&serialize=0"
TOKEN_AUTH=`$CMD_TOKEN_AUTH`

for period in day week year; do
  CMD="$PHP_BIN $PIWIK_PATH -- module=API&method=VisitsSummary.getVisits&idSite=all&period=$period&date=last52&format=xml&token_auth=$TOKEN_AUTH";
  $CMD
  echo ""
done

pm2036
16/09/2009, 13h55
Bonjour,

A mon avis, c'est dans le script "archive.sh" qu'il faut modifier le chemin de php pour qu'il utilise la v5 (il doit appeler "php" qui pointe vers la v4)
et continuer à appeler le script sh directement.

Qu'y a-t-il dans archive.sh?


[edit]
Modifier archive.sh
et sous
Code:
PHP_BIN=`which php5 2>/dev/null`
if test -z $PHP_BIN; then
  PHP_BIN=`which php`
fi
insérer
Code:
PHP_BIN ="/usr/local/bin/php.ORIG.5.2.6"
ça contournera le problème

birdyman
16/09/2009, 13h25
Bonjour,

Je galère pas mal pour mettre en place une tâche planifiée dans le manager sur un mutu.
J'ai lu la moitié du forum, et questionné notre amis google, mais y a un truc qui m'échappe.

Je dois pour archiver des statistiques de Piwik (remplaçant de phpmyvisits) lancer le script suivant :

Code:
home/login/www/stats/cron/archive.sh
Avant de créer ma tâche planifiée j'essaye en SSH avec putty
mais quand dans le répertoire, je tape
Code:
/bin/bash ./archive.sh
j'obtiens l'erreur suivante "To run Piwik you need at least PHP version 5.1.3"

Après pas mal de recherches je suis tombé sur une commande permettant d'utiliser php5 en ssh, ca me semble un peu bizarre vu que c'est pas un fichier php que je lance, mais j'essaye quand même
je lance donc
Code:
/usr/local/bin/php.ORIG.5.2.6 ./archive.sh
La je n'ai plus d'erreur, mais le code contenu dans archive.sh s'affiche simplement a l'écran et rien ne se passe.

Voilà j'ai fais plein de tests dans tous les sens, j'ai essayé avec un fichier .cgi comme indiqué dans le guide ovh, j'ai mis les chmod sur les scripts, ca ne fonctionne pas et je ne vois pas comment m'en sortir.

Merci de votre aide.