J'essaie d'exécuter un script php sur une base programmée. J'ai donc pensé que crontab était une bonne idée. Le serveur que j'utilise est sous Linux avec lequel je ne suis pas familier. Donc, le problème que je rencontre est, je ne sais pas comment rendre le script exécutable à partir de php. Je dois référencer le script, ou le placer dans un dossier pouvant exécuter php à partir de la ligne de commande. Donc, je ne sais pas quel chemin donner à ma crontab, par exemple:
5 * * * * var/www/some/path/script.php
J'ai trouvé des informations vagues sur cet exécutable php trouvé dans
/usr/bin/php
Mais je ne trouve aucun fichier php, peut-être que je ne l’ai pas installé? Mon installation de php5 et Apache est dans:
/etc/php5
Ma question est donc la suivante: est-il possible d'exécuter un script php avec crontab dans un autre dossier, ou est-ce qu'il me manque simplement l'exécutable php dans usr/bin/php?
Commencez par taper sur une ligne de commande:
whereis php
Faites cela en tant qu'utilisateur sous lequel le travail cron sera exécuté. Cela vous montrera le chemin d'accès à votre exécutable. Vous pouvez ensuite utiliser ce chemin (s'il ne figure pas déjà dans votre variable PATH) dans votre entrée cron:
5 * * * * /your/path/to/php /var/www/some/path/script.php
Edit: vous devrez peut-être installer le paquet php5-cli
(nom du paquet Ubuntu) si vous n'avez que le module Apache PHP installé. Cela vous donnera l'exécutable binaire que vous pouvez exécuter à partir d'une ligne de commande.
Est-ce un système Linux?
Dans les nouvelles distributions Linux, il y a
en fait un système pratique crontab-setup
qui ne nécessite aucune entrée dans la crontabpar l'utilisateur . E.g dans SuSE Linux, vous avez des répertoires
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.monthly/
/etc/cron.weekly/
Il suffit de mettre un script d’invocation (konno_php_start) dans l’un de ces répertoires , Comme
/etc/cron.hourly/konno_php_start
qui est exécutable (environ 755 chmod) et contient:
#!/bin/sh
cd /var/www/some/path/
php script.php >> logfile.txt 2>&1
et redémarrez le démon cron. C'est tout.
A partir du fichier de log, vous verrez si votre interprète php
sera trouvé dans le PATH. Sinon, changez la ligne Dans /etc/cron.hourly/konno_php_startto
/full/path/to/php script.php >> logfile.txt 2>&1
Cordialement
rbo
Je devais trouver pour suivre un sentier pour trouver l'exécutable:
andy@ararat:~$ type php
php is /usr/bin/php
andy@ararat:~$ file /usr/bin/php
/usr/bin/php: symbolic link to `/etc/alternatives/php'
andy@ararat:~$ file /etc/alternatives/php
/etc/alternatives/php: symbolic link to `/usr/bin/php5'
andy@ararat:~$ file /usr/bin/php5
/usr/bin/php5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
vous devez donc inclure/usr/bin/php5 comme chemin d'accès à l'exécutable php comme ceci:
andy@ararat:~$crontab -e
#*/1 * * * * /usr/bin/php5 /home/andy/www/dev.com/corp_rewards_cron.php
Vous pouvez également utiliser env , il trouvera et lancera php pour vous:
/usr/bin/env php /var/www/some/path/script.php
Ou vous pouvez placer un Shebang dans votre script.php (première ligne):
#!/usr/bin/env php
puis rendez-le exécutable et faites l'appeler directement par crontab, comme dans votre premier exemple
5 * * * * /var/www/some/path/script.php
Vous pouvez utiliser la commande wget localement:
5 * * * * wget http://localhost/some/path/script.php
Je vous suggère de faire comme ça,
*/5 * * * * /path/gridmon2.pl 1> /dev/null 2> /dev/null
où dans votre code .pl vous devriez utiliser greget ou quelque chose comme ceci:
wget "/www/root/index.php"
ou vous pouvez simplement faire comme ça:
/usr/bin/wget "/www/root/index.php"
C'est juste ma suggestion, je n'ai essayé que wget vers un site externe, pas localement et cela fonctionne.
s'il vous plaît essayez de revenir.