Bash-скрипт для запуска php-скрипта

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

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

Пока мне сказали, что мне нужно поставить:

#!/pathtoscript/testphp.php

в начале моего php-скрипта. Я не уверен, что делать отсюда ...

Любой совет? Спасибо.


person mmmbaileys    schedule 31.03.2011    source источник
comment
Этот ответ сработал для меня   -  person quantme    schedule 23.06.2021


Ответы (9)


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

#!/usr/bin/php

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

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

person Rafe Kettler    schedule 31.03.2011
comment
Если вы собираетесь использовать shebang для командной строки, вам ДЕЙСТВИТЕЛЬНО следует использовать #!/usr/bin/env php, так как это позволяет сделать скрипт более переносимым, поскольку PHP не всегда установить в /usr/bin/php. Есть смысл? - person Rican7; 01.02.2013

Иногда PHP размещается в нестандартном месте, поэтому, вероятно, лучше сначала найти его, а затем попытаться выполнить.

#!/usr/bin/env bash
PHP=`which php`
$PHP /path/to/php/file.php
person FDisk    schedule 19.04.2015

Предыдущий постер гласил..

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

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

быстрый способ узнать, ГДЕ ВАШ конкретный исполняемый файл находится на вашем $PATH, попробуйте.. ➜which -a php 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 в командной строке… но я могу использовать любой из них в шебанге или напрямую… Вы также можете комбинировать имя исполняемого файла с env, как это часто бывает, но на самом деле я мало что знаю/не доверяю этому. XOXO.

person Alex Gray    schedule 09.01.2012

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

/usr/bin/php path_to_your_php_file

в вашем кронтаб.

person Spyros    schedule 31.03.2011

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

#!/bin/sh

php /pathToScript/script.php

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

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

Удачи!

person Sergio Morales    schedule 31.03.2011
comment
В большинстве сред вы не можете просто вызвать php youscript.php, вам нужно найти правильный путь. Например. используя весь путь /usr/bin/php myscript.php или определяя его динамически, вызывая which php и записывая результат в переменную, которую вы будете использовать позже. - person Hafenkranich; 03.08.2017

Скрипт bash должен быть примерно таким:

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

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

person Bogdan Constantinescu    schedule 31.03.2011

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

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

whereis php

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

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

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

person Edward J Beckett    schedule 11.04.2012
comment
возвращение вывода неизвестно, где - person Kamlesh; 26.09.2019
comment
Вам придется установить whereis, если он не установлен по умолчанию. - person Edward J Beckett; 26.09.2019
comment
Я установил ffmpeg в системе Windows, он работает из командной строки, но не работает из php, пока включена команда exec. Я также перезапустил компьютер и xampp после установки ffmpeg. К вашему сведению, у меня также есть переменные среды установки ffmpeg. Пожалуйста, помогите, если можете. Большое спасибо :) - person Kamlesh; 26.09.2019
comment
Вы должны создать отдельный вопрос для этого помощника вопроса. - person Edward J Beckett; 26.09.2019

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

person Costi Ciudatu    schedule 31.03.2011

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

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

И скрипт вернул это после выполнения php-скрипта:

X-Powered-By: PHP/7.1.1 Content-type: text/html; кодировка = UTF-8

Готово!

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

person Luis H Cabrejo    schedule 20.12.2018