2011-03-31 6 views
29

J'ai un script php que je veux exécuter en utilisant un script bash, donc je peux utiliser Cron pour exécuter le script php toutes les minutes. Pour autant que je sache, j'ai besoin de créer le script bash pour gérer le script php qui me permettra ensuite d'utiliser l'outil/timer Cron.Script Bash pour exécuter le script php

Jusqu'à présent, on m'a dit que je dois mettre:

#!/pathtoscript/testphp.php 

au début de mon script php. Je ne sais pas quoi faire à partir d'ici ...

Un conseil? Merci.

Répondre

58

Si vous avez installé PHP comme outil de ligne de commande (essayez émission php au terminal et voir si cela fonctionne), vos besoins en ligne tralala (#!) pour ressembler à ceci:

#!/usr/bin/php 

Mettez ça à en haut de votre script, rendez-le exécutable (chmod +x myscript.php), et faites un travail Cron pour exécuter ce script (de la même manière que vous exécuteriez un script bash).

Vous pouvez également utiliser php myscript.php.

+20

Si vous allez utiliser un tralala pour l'utilisation de la ligne de commande, vous devez vraiment utiliser « ** #!/Usr/bin/env php ** », car il permet au script d'être plus portable, car PHP ne peut pas toujours être installé dans "/ usr/bin/php". Avoir du sens? – Rican7

0

Si vous ne faites rien dans votre script bash que d'exécuter le php, vous pouvez simplement lancer le script php à partir de cron avec une commande comme/usr/bin/php /path/to/your/file.php .

7

Vous avez juste besoin de définir:

/usr/bin/php path_to_your_php_file 

dans votre crontab.

+0

J'ai dû ajouter un php avant le chemin, mais le concept a fonctionné. –

4

Le script bash doit être quelque chose comme ceci:

#!/bin/bash 
/usr/bin/php /path/to/php/file.php 

Vous avez besoin de l'exécutable php (habituellement dans/usr/bin) et le chemin du script php pour être exécuté. Maintenant vous n'avez qu'à mettre ce script bash sur crontab et vous avez terminé!

5

Je suis assez sûr que c'est quelque chose comme ce que vous cherchez:

#!/bin/sh 

php /pathToScript/script.php 

Enregistrer que votre nom de script souhaité (par exemple runPHP.sh) et lui donner les droits d'exécution, vous pouvez utiliser comme tu le veux. Editer: Vous pouvez aussi bien ne pas utiliser de script bash et ajouter simplement la commande "php ..." au crontab, si je ne me trompe pas.

Bonne chance!

+0

Dans la plupart des environnements, vous ne pouvez pas simplement appeler 'php youscript.php' mais devez trouver le bon chemin. Par exemple. en utilisant le chemin entier '/ usr/bin/php myscript.php' ou en le devinant dynamiquement en appelant' which php' et en écrivant le résultat dans une variable que vous utiliserez plus tard. – Hafenkranich

10

Une affiche précédente a dit ..

Si vous avez installé PHP en ligne outil de ligne de commande ... votre tralala doit ressembler à ceci (#!): #!/usr/bin/php

Bien que ce pourrait être vrai ... juste parce que vous pouvez taper php ne signifie pas nécessairement que c'est où php va être .../usr/bin/php est un emplacement commun ... mais comme avec tout shebang ... il doit être adapté à votre env.

un moyen rapide de savoir où votre exécutable particulier se trouve sur votre $PATH, essayez .. ➜ which -a phpENTER, qui pour moi ressemble ..

php is /usr/local/php5/bin/php
php is /usr/bin/php
php is /usr/local/bin/php
php is /Library/WebServer/CGI-Executables/php

Le premier est le défaut que j'aurais si je venais de taper php un t une invite de commande ... mais je peux utiliser l'un d'entre eux dans un shebang, ou directement ... Vous pouvez également combiner le nom de l'exécutable avec env, comme on le voit souvent, mais je ne sais pas vraiment/confiance que. BISOUS BISOUS.

1

un moyen rapide de savoir où votre exécutable particulier est situé sur votre $ PATH, essayez.

encore plus rapide pour savoir où php est ...

whereis php 

Je suis en cours d'exécution debian et commande ci-dessus me montrant

php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz 

espoir qui aide.

10
#!/usr/bin/env bash 
PHP=`which php` 
$PHP /path/to/php/file.php