Bash скрипт для запуска php скрипта - PullRequest
39 голосов
/ 01 апреля 2011

У меня есть сценарий php, который я хочу запустить с помощью сценария bash, поэтому я могу использовать Cron для запуска сценария php каждую минуту или около того.

Насколько мне известно, мне нужносоздайте сценарий bash для обработки сценария php, который затем позволит мне использовать инструмент / таймер Cron.

До сих пор мне говорили, что в начале нужно поставить:

#!/pathtoscript/testphp.php

моего сценария PHP.Я не уверен, что делать отсюда ...

Любой совет?Благодаря.

Ответы [ 9 ]

67 голосов
/ 01 апреля 2011

Если у вас установлен PHP в качестве инструмента командной строки (попробуйте выдать php на терминал и посмотреть, работает ли он), ваша строка shebang (#!) должна выглядеть следующим образом:

#!/usr/bin/php

Поместите это в начало вашего скрипта, сделайте его исполняемым (chmod +x myscript.php) и создайте задание Cron для выполнения этого скрипта (так же, как вы выполняете скрипт bash).

Вы также можетеиспользуйте php myscript.php.

14 голосов
/ 19 апреля 2015
#!/usr/bin/env bash
PHP=`which php`
$PHP /path/to/php/file.php
12 голосов
/ 09 января 2012

Предыдущий постер говорил:

Если у вас установлен PHP в качестве инструмента командной строки… ваша строка shebang (#!) Должна выглядеть так: #!/usr/bin/php

Хотя это может быть правдой ... просто потому, что вы можете ввести php, НЕ обязательно означает, что именно там будет php ... /usr/bin/php - это Aобщее расположение ... но, как и в случае с любым другим шебангом ... его нужно адаптировать к ВАШЕМУ env.

быстрому способу выяснить, ГДЕ ВАШ конкретный исполняемый файл находится на вашем $PATH, попробуйте ..* ENTER , что для меня выглядит как ..

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

во-первых, это значение по умолчанию, которое я получу, если просто наберу php в командной строке ... но я могу использовать любой из них в shebang или напрямую ... Вы также можете комбинировать имя исполняемого файла с env, как это часто можно увидеть, но я действительно не знаю много о / доверие , что .XOXO.

7 голосов
/ 01 апреля 2011

Вам просто нужно установить:

/usr/bin/php path_to_your_php_file

в вашем crontab.

6 голосов
/ 01 апреля 2011

Я уверен, что что-то вроде этого - то, что вы ищете:

#!/bin/sh

php /pathToScript/script.php

Сохраните его с нужным именем скрипта (например, runPHP.sh) и предоставьте ему права на выполнение, тогда вы можете использовать его по своему усмотрению.

Редактировать: Вы также можете вообще не использовать скрипт bash и просто добавить команду "php ..." в crontab, если я не ошибаюсь.

Удачи!

4 голосов
/ 01 апреля 2011

Сценарий bash должен выглядеть примерно так:

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

Вам необходим исполняемый файл php (обычно он находится в / usr / bin) и путь запуска сценария php.Теперь вам нужно только поставить этот bash-скрипт на crontab, и все готово!

2 голосов
/ 11 апреля 2012

быстрый способ узнать, ГДЕ ВАШ конкретный исполняемый файл находится в вашем $ PATH, попробуйте.

Еще более быстрый способ узнать, где находится php ...

whereis php

Я выполняю команду debian и выше, показывая мне

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

Надеюсь, что это поможет.

0 голосов
/ 20 декабря 2018

Я нашел php-cgi на моем сервере.И это на пути к окружающей среде, поэтому я смог бежать из любого места.Я успешно выполнил file.php в своем скрипте bash.

#!/bin/bash
php-cgi ../path/file.php

И скрипт вернул это после того, как скрипт php был выполнен:

X-Powered-By: PHP / 7.1.1 Тип контента: текст / HTML;charset = UTF-8

сделано!

Кстати, сначала проверьте, работает ли оно, путем проверки версии, выдав команду php-cgi -v

0 голосов
/ 01 апреля 2011

Если вы ничего не делаете в своем bash-скрипте, кроме запуска php, вы можете просто запустить php-скрипт из cron с помощью команды, подобной / usr / bin / php /path/to/your/file.php.

...