Usr bin php f что означает
Перейти к содержимому

Usr bin php f что означает

  • автор:

Usr bin php f что означает

Сегодня мы рассмотрим как настроить выполнение задач по расписанию с помощью CRON на виртуальном хостинге.

Cron (Command Run ON) — планировщик задач. Используется для выполнения команд и скриптов на сервере хостинга в определённое время. Планировщик cron доступен после заказа услуги хостинга Linux или Windows.

  1. Войдите в панель управления хостингом.
  2. В разделе «Главное» выберите пункт Планировщик и нажмите Создать:
  3. Заполните поля:
    • Команда — введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже,
    • Описание — введите описание,
    • Расписание — выберите тип расписания и в оставшихся полях задайте периодичность выполнения задания.Нажмите Ok:

Примеры команд для cron-заданий

Запуск задания через GET

Команда для запуска:

GET http://domain.kz/script.php

Где http://domain.kz/script.php — URL-адрес, при обращении к которому будет выполняться сron-задание.

Запуск задания через WGET

Альтернативный вариант команды для запуска:

wget -q -O - http://domain.kz/script.php > /dev/null 2>&1

Где http://domain.kz/script.php — URL-адрес, при обращении к которому будет выполняться cron-задание.

Запуск задания через CLI

При запуске задания через GET или WGET, PHP-скрипт запускается тем интерпретатором PHP, версия которого активирована в панели управления хостингом. Если вам необходимо выполнить скрипт под другой версией PHP, запустите cron-задание через CLI.

При этом, вы можете указать необходимую версию php интерпретатора, стандартный путь — /usr/bin/php

Полный путь к интерпретатору php в зависимости от версии для ISPmanager:

  • версия php 5.4 /usr/bin/php
  • версия php 5.6 /opt/php56/bin/php
  • версия php 7.0 /opt/php70/bin/php
  • версия php 7.1 /opt/php71/bin/php
  • версия php 7.2 /opt/php72/bin/php
  • версия php 7.3 /opt/php73/bin/php
  • версия php 7.4 /opt/php74/bin/php
    (узнать путь до php можно, выполнив команду whereis php в shell)

Команды для запуска:

/opt/php/7.4/bin/php -f /var/www/login/data/www/domain.kz/script.php
/opt/php/7.4/bin/php -f var/www/vhosts/login/httpdocs/domain.kz/script.php

login — ваш логин хостинга

domain.kz — имя вашего домена,

script.php — имя файла с cron-заданием.

Обратите внимание: скрипты можно запускать через php (/opt/php/7.4/bin/php) и через php-cgi (/opt/php/7.4/bin/php-cgi). О том, какой режим подойдёт для работы скриптов, вы можете узнать у разработчиков вашего сайта.

Запуск задания через CLI с учётом параметров php.ini

Добавьте к командам ключ «-c» и пропишите полный путь до файла php.ini.

Команды для запуска:

Есть два варианта пути к файлу php.ini, который зависит от того, включена ли опция php.ini для домена.

Если вы храните настройки PHP отдельно для каждого домена по пути /var/www/php-bin/имя-домена/php.ini, то команда выглядит так:

/opt/php/7.4/bin/php -c /var/www/login/data/php-bin/domain.kz/php.ini -f /var/www/login/data/www/domain.kz/script.php

Если вы используете общую версию PHP и храните настройки для всех доменов по пути /var/www/php-bin-php(номер-версии)/php.ini, то команда выглядит так:

/opt/php/7.4/bin/php -c */var/www/login/data/php-bin-php(номер-версии)/php.ini* -f /var/www/login/data/www/domain.kz/script.php
/opt/php/7.4/bin/php -c /var/www/vhosts/login/php-bin/php.ini -f var/www/vhosts/login/httpdocs/domain.kz/script.php

login — ваш логин хостинга

domain.kz — имя вашего домена,

script.php — имя файла с cron-заданием.

Как добавить новую задачу на хостинге Windows

Воспользуйтесь инструкцией для Plesk по инструкции выше.

Если в 4 пункте инструкции вы выбрали тип задачи Выполнить PHP-скрипт, в поле Путь к скрипту укажите путь к скрипту, а в поле Аргументы укажите аргументы скрипта в зависимости от модуля: На PHP На ASP/ASP.NET

C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP74\php.exe

Где PleskPHP74 — версия PHP

c:\inetpub\vhosts\login\httpdocs\domain.kz\script.php

login — ваш логин хостинга

domain.kz — имя вашего домена

script.php — имя файла с cron-заданием.

Как проверить работу CRON ?

1. В корне сайта создайте два файла:
my_cron.txt с правами 777.
my_cron.php с правами 755 или 751

Первый файл my_cron.txt (это наш лог, куда скрипт будет писать сообщения) оставьте пустым.
Второй файл my_cron.php откройте в редакторе и впишите примерно такой текст:
Код PHP:

 $fd = fopen("/home/user/mysite_kz/my_cron.txt","a"); fwrite($fd, "Обращение к файлу - ".date("d.m.Y H:i")."\r\n"); fclose($fd); ?>

Как Вы уже поняли, команда fopen(‘path_to_log’) содержит путь к логу. Часто этот путь следует указывать от корня хостинга (а не корня сайта). Естественно, на каждом хостинге (и для каждого Вашего сайта, если их несколько) этот путь будет различным.

Создайте в планировщике задачу в соответсвии с рекомедациями выше и указанием пути к нашему скрипту.

Приведенный выше пример запускает скрипт my_cron.php. Он пишет в лог my_cron.txt строчки вроде
Код PHP:

Обращение к файлу - 11.01.2019 21:13 Обращение к файлу - 11.01.2019 21:14 Обращение к файлу - 11.01.2019 21:15

Если видите аналогичные строчки — Планировщик работает.

Если лог пуст — значит Планировщик не работает. Вернитесь к началу данной статьт и проверитьте пути. Возможно, неправильно прописаны пути к интерпретатору php или вашему скрипту.

Не могу запустить исполняемый php скрипт

Всем привет. Не уверен, что в нужном разделе создаю тему, поэтому заранее прошу прощения.

В общем, ситуация такая. У меня xubuntu 15.04 (пользуюсь разными версиями уже лет 5-6, но как обыватель). Сегодня встал вопрос, нужен php 5. Первым дело полез смотреть в apt версию php (5.6.4), а хотелка хочет свежее версию. Пошёл на php.net и скачал исходники. Почитал мануал как устанавливать из исходников. Осилил, поставил.

chmod +x script.php ./script.php

и тут начинается:

#!/usr/local/bin/php: Нет такого файла или каталога

я сделал симлинк /bin/php, ситуация такая же.

rtfmил по полной программе, везде пишут, что необходимо в $PATH добавить путь к папке с php. Сказано — сделано. В .bash_profile добавил export php=путь до php, не помогает.

PS: Если php ставить из репозитория, то скрипт начинает нормально работать.

Usr bin php f что означает

    Указание конкретного файла для запуска.

$ php my_script.php $ php -f my_script.php
$ php -r 'print_r(get_defined_constants());'

Необходимо быть особо осторожным при использовании этого способа, т.к. может произойти подстановка переменных оболочки при использовании двойных кавычек.

Замечание: Внимательно прочтите пример: в нем нет открывающих и закрывающих тегов! Опция -r просто в них не нуждается, и их использование приведёт к ошибке разбора.

$ some_application | some_filter | php | sort -u > final_output.txt

Как и любое другое консольное приложение бинарный файл PHP принимает аргументы, но PHP-скрипт также получает аргументы. PHP не ограничивает количество аргументов, передаваемых в скрипт (оболочка консоли устанавливает некоторый порог количества символов, которые могут передать; обычно этого лимита хватает). Переданные аргументы доступны в глобальном массиве $argv . Первый индекс (ноль) всегда содержит имя вызываемог из командной строкио скрипта. Учтите, что если код вызывается из командной строки на лету с опцией -r, значением элемента $argv[0] будет «Стандартный поток» (Standard input code); до PHP 7.2.0 это был дефис ( «-» ). То же самое верно и для кода, переданного через конвейер из STDIN .

Вторая зарегистрированная глобальная переменная — $argc , которая содержит количество элементов в массиве $argv (а не количество аргументов, которые передали скрипту).

Если передаваемые аргументы не начинаются с символа — , то особых проблем быть не должно. Передаваемый в скрипт аргумент, который начинается с — создаст проблемы, т.к. PHP решит, что он сам должен его обработать. Для предотвращения подобного поведения используйте разделитель списка аргументов — . После того, как этот разделитель будет проанализирован PHP, все последующие аргументы будут переданы в скрипт нетронутыми.

# Эта команда не запустит данный код, но покажет информацию об использовании PHP $ php -r 'var_dump($argv);' -h Usage: php [options] [-f] [args. ] [. ] # Эта команда передаст аргумент '-h' в скрипт, предотвратив показ справки PHP $ php -r 'var_dump($argv);' -- -h array(2) < [0]=>string(1) "-" [1]=> string(2) "-h" >

Однако, в Unix-системах есть ещё один способ использования PHP для консольных скриптов. Можно написать скрипт, первая строка которого будет начинаться с #!/usr/bin/php (или же другой корректный путь к бинарному файлу PHP CLI ). После этой строки можно поместить обычный PHP-код, заключённый в открывающие и закрывающие теги PHP. Как только будут установлены корректные атрибуты запуска на файл (например, chmod +x test), скрипт может быть запущен как обычный консольный или perl-скрипт:

Пример #1 Запуск PHP-скрипта как консольного

#!/usr/bin/php
var_dump ( $argv );
?>

Предполагая, что этот файл назван test и находится в текущей директории, можно сделать следующее:

$ chmod +x test $ ./test -h -- foo array(4) < [0]=>string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" >

Как можно увидеть, в этом случае не нужно заботиться о передаче параметров, которые начинаются с — .

Исполняемый PHP-файл может использоваться для запуска PHP-скриптов независимо от веб-сервера. В случае работы в Unix-подобной системе, необходимо добавить в первую строку файла #! (называемый также «shebang») чтобы указать, какая из программ должна запускать скрипт. На Windows-платформах можно назначить обработчик php.exe для файлов с расширениями .php или создать пакетный (.bat) файл для запуска скриптов посредством PHP. Строка, добавляемая в начале скрипта для Unix-систем, не влияет на их работу в ОС Windows, таким образом можно создавать кроссплатформенные скрипты. Ниже приведён простой пример скрипта, выполняемого из командной строки:

Пример #2 Скрипт, предназначенный для запуска из командной строки (script.php)

if ( $argc != 2 || in_array ( $argv [ 1 ], array( ‘—help’ , ‘-help’ , ‘-h’ , ‘-?’ ))) ?>

Это консольный PHP-скрипт, принимающий один аргумент.

Любое слово, которое вы хотели бы
напечатать. Опции —help, -help, -h,
или -? покажут текущую справочную информацию.

В приведённом выше скрипте в первой строке содержится shebang, указывающий что этот файл должен запускаться PHP. Работа ведётся с CLI -версией, поэтому не будет выведено ни одного HTTP -заголовка.

Скрипт сначала проверяет наличие обязательного одного аргумента (в дополнение к имени скрипта, который также подсчитывается). Если их нет, или если переданный аргумент был —help, -help, -h или -?, выводится справочное сообщение с использованием $argv[0] , которое содержит имя выполняемого скрипта. В противном случае просто выводится полученный аргумент.

Для запуска приведённого примера в Unix-системе, нужно сделать его исполняемым и просто выполнить в консоли script.php echothis или script.php -h. В Windows-системе можно создать пакетный файл:

Пример #3 Пакетный файл для запуска PHP-скрипта из командной строки (script.bat)

@echo OFF "C:\php\php.exe" script.php %*

Предполагая, что вышеприведённый скрипт называется script.php , а полный путь к CLI php.exe находится в C:\php\php.exe , этот пакетный файл запустит его с переданными параметрами: script.bat echothis или script.bat -h.

Также можно ознакомиться с модулем Readline для получения дополнительных функций, которые можно использовать для улучшения консольного PHP-скрипта.

В Windows запуск PHP можно настроить без необходимости указывать C:\php\php.exe или расширение .php . Подробнее эта тема описана в разделе Запуск PHP из командной строки в Microsoft Windows.

Замечание:

В Windows рекомендуется запускать PHP под актуальной учётной записью пользователя. При работе в сетевой службе некоторые операции не будут выполнены, поскольку «сопоставление имён учётных записей и идентификаторов безопасности не выполнено».

Почему нет php5.6 (он установлен в системе) в /usr/bin?

На сервере Ubuntu установлены php7.0 и php5.6. Через крон запускаются скрипты через php7.0 (эти команды содержат запись /usr/bin/php, которая ведёт на php7.0).
Мне нужно запускать один скрипт из командной строки через php5.6.
Пробовал запись /usr/bin/php5.6 script_name.php но пишет command php5.6 not found.

606ecee8d61d6366670314.jpeg

И странно что php5.6 установлен, но в /usr/bin есть только php7.0
Скрин:

Можете подсказать в чем может быть причина?

  • Вопрос задан более трёх лет назад
  • 156 просмотров

4 комментария

Средний 4 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *