Ошибки cron ispmanager

Cron — планировщик задач, который используется для периодического выполнения заданий в определённое время.

Чтобы корректно настраивать cron-задания, выберите нужную инструкцию ниже в зависимости от того, установлена ли на вашем сервере панель управления ISPmanager, и следуйте ей:


Настройка cron-заданий на сервере без панели управления ISPmanager

Для просмотра, редактирования и добавления новых задач откройте командную строку и выполните команду: crontab -e

Обратите внимание

Добавляйте задачи от имени того пользователя, под которым вы авторизованы. Не рекомендуется добавлять задачи под root-пользователем, так как это может негативно сказаться на безопасности вашего сервера.

Задачи добавляются в формате: минута час день месяц день_недели /путь_к_файлу

Минуты, часы, дни, месяцы и день недели могут быть заданы тремя способами:

Комбинация Что это значит? Пример Комментарий
1. символ * Задача будет повторяться каждую минуту, час или день и т.д. * /path/to/file Cron-задание будет запускать задачу каждую минуту.
2. цифра Задача будет запускаться в определённое время. 5 /path/to/file Cron-задание будет запускать задачу каждый час в 05 минут.
3. /цифра Задача запускается с определённым интервалом. /3 * /path/to/file Cron-задание будет запускать задачу через каждые три часа.

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

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

Используется, если cron-задание должно запускаться с учётом контекста движка:

get http://site.ru/script.php

где site.ru — имя вашего домена, а script.php — имя файла с заданием.

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

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

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

где site.ru — имя вашего домена, а script.php — имя файла с заданием.

Запуск задания под разными версиями PHP

При добавлении cron-задания с помощью команд get или wget, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.

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

Обратите внимание

Скрипты можно запускать и через php и через php-cgi. Например:

  • /opt/php/5.4-with-xcache/bin/php-cgi
  • /opt/php/5.4-with-xcache/bin/php

О том, какой режим подойдёт для работы скриптов, вы можете узнать у разработчиков вашего сайта.

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

Cron-задание можно выполнить в командной строке. Например, если требуется запустить скрипт под версией PHP 5.3:

Для ISPmanager:

/opt/php/5.3/bin/php -f /var/www/user_name/data/www/site.ru/script.php

где user_name — имя пользователя, site.ru — имя вашего домена, script.php — имя файла с cron-заданием.


Настройка cron-заданий на сервере с панелью управления ISPmanager

Совет

Не рекомендуется добавлять задачи от root-пользователя, так как это может негативно сказаться на безопасности вашего сервера.

  1. 1.

  2. 2.

    В разделе Планировщик CRON нажмите Создать задание:

  3. 3.

    В поле «Команда» введите команду, которую необходимо выполнять, ниже установите время запуска задания и нажмите Ok:

Готово. После выполнения предыдущего шага вы зададите cron-задание для выбранного файла в панели управления ISPmanager.

Частые ошибки в cron-заданиях

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

Проверьте корректность пути, запустив команду из командной строки сервера (SSH).

Ошибки при запуске планировщика

Проанализируйте лог-файл «var/log/errors.log», чтобы найти причину проблемы. Вы можете получить отчёт о выполнении cron-задания на e-mail. Для этого: в панели управления ISPmanager выберите пункт Планировщик CRON и нажмите Настройки:

На открывшейся странице введите e-mail, на который будут высланы результаты запуска, и нажмите Оk:

У консольной версии PHP не подключён ioncube

Проверьте, подключён ли ioncube, запустив cron-команду из консоли сервера.

Используется curl (wget), который не установлен на сервере

Попробуйте оба варианта: с «wget» и с «curl». Мы советуем указывать абсолютный путь к соответствующей утилите curl или wget в команде. Также рекомендуется прописывать URL-адрес файла, а не его системный путь.

Запускается PHP старой версии

Такая ситуация может возникать, если на сервере установлено несколько версий PHP. При добавлении cron-задания с помощью get или wget, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.

В Unix-подобных ОС существует возможность запускать программы пользователя в указанное им время. Для этого используется планировщик задач cron, который получает инструкции от пользователей и производит выполнение любых задач по полученным сценариям. Наши клиенты могут пользоваться данной возможностью для выполнения периодических задач.

  • Как настроить cron средствами панели ISPmanager 6
  • Как настроить cron по ssh
  • Как запустить PHP-скрипт по расписанию
  • Как получить сообщения об ошибках от программ, запускаемых cron
  • Как запустить сценарий от имени пользователя
  • Ограничения

Как настроить cron средствами панели ISPmanager 6

Настраивайте cron-сценарии через панель управления в разделе Планировщик CRON:

Чтобы добавить новые задания, нажмите Создать задание. Откроется интерактивный редактор cron-сценариев:

В поле Команда укажите полный путь до скрипта или команду, которая должна выполняться (для системных команд полный путь можно не указывать). Например, полный путь до файла script.pl, размещенного в корне площадки, будет выглядеть так:

/var/www/u12345/data/www/script.pl

Убедитесь, что файл, который нужно запустить, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:

chmod 750 script.pl

В поле Описание вы можете сделать пометку, чтобы не забыть что выполняет данный сценарий

Далее выберите периодичность, с которой будет запускаться Ваш сценарий. Есть два варианта настройки — базовый и экспертный.

Базовый — вы выбираете один из перечисленных вариантов в строке Выполнить: каждый час, ежедневно, еженедельно, ежемесячно, ежегодно, при запуске.

Экспертный — гибкая настройка периодичности запуска: минуты, часы, дни месяцев, месяцы, дни недели (0 — воскресенье). Формат ввода: * — все минуты; */n — каждые n минут; n — с началом минуты n; a,b,c-e — с началом минут a,b,c,d,e

Примеры базового режима настройки периодичности запуска:

  • выполнять задание по понедельникам в 1 час 15 минут ночи

  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год

Примеры экспертного режима настройки периодичности запуска:

  • выполнять задание раз в час в 05 минут

  • выполнять задание по понедельникам в 1 час 15 минут ночи

  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год

Когда все поля будут заполнены (кроме поля Описание, оно необязательное), нажмите Создать.

Отправка отчетов на email о выполнении сценария

Для настройки уведомлений укажите email, на который будут приходить уведомления о выполнении сценария. Для этого перейдите в раздел Планировщик CRON.

Нажмите на кнопку «Настройки» и в поле «Адрес e-mail» укажите email, на который необходимо отправлять уведомления о выполнении сценариев.

В настройках сценария убедитесь, что не стоит галочка напротив поля Не отправлять отчет по e-mail.

Как настроить cron по ssh

Конфигурирование сценариев cron производится через unix shell. Определите, какие программы нужно запустить, и узнайте полные пути к ним на диске сервера. Для этого перейдите с помощью команды cd в каталог, где находится запускаемая программа, и узнайте полный путь к этому каталогу командой pwd. Путь может выглядеть так — /home/u12345/scripts/script.pl.

Убедитесь, что файл имеет права на чтение+исполнение (r+x) для пользователя, от которого вы запускаете скрипт. Поменять права на нужные можно командой chmod 750 script.pl

750 — полные права владельцу файла, группе – чтение и исполнение, остальным – доступ запрещен.

Выполните команду crontab -e – планировщик будет менять план пользователя, от имени которого вы запускаете cron. При первом запуске будет предложен выбор текстового редактора. Выберите редактор с которым вы уже знакомы. Как пример мы рассмотрим текстовый редактор vi. После ввода команды вы окажетесь в текстовом редакторе vi (п), где сможете вводить текст сценария для cron.

Краткая справка по редактору vi:

  • для вставки текста нажмите i, затем вводите текст
  • для удаления символов нажмите ESC, а затем наберите x
  • для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
  • для сохранения и выхода нажмите ESC, а затем наберите :wq

Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нажмите enter, иначе задания работать не будут.

Задание выглядит как строка. В начале находятся пять обязательных полей, разделенных пробелами, для указания периодичности задания. Далее следует команда, которую нужно запускать:

поле1 поле2 поле3 поле4 поле5 команда

Значения первых пяти полей:

  • минуты — число от 0 до 59
  • часы — число от 0 до 23
  • день месяца — число от 1 до 31
  • номер месяца в году — число от 1 до 12
  • день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно.

Символ «*» означает «все возможные значения». Звездочка «*» в поле «часы» будет означать «запускать каждый час». Символ «/» служит для указания дополнительной периодичности задания. Например, «*/3» в поле «часы» означает каждые три часа. Если определены поля «день месяца» и «день недели» (не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца.

13 13 10 * 5 /home/u12345/script.pl 

такая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.

Cron позволяет запускать сценарии при загрузке системы — укажите @reboot в начале сценария вместо периодичности запуска:

@reboot /home/u12345/script.pl

Так выглядит простейший сценарий cron:

0 */3 * * 2,5 /home/u12345/script.pl

Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введите такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования. Задание будет выполнятся с указанной периодичностью, если вы не допустили ошибок. 

Cron сообщает об ошибках в сценарии:

/tmp/crontab.xxxxxxx: 1 строка, 9 символов
crontab: installing new crontab
"/tmp/crontab.xxxxxxx":1: bad minute
crontab: errors in crontab file, can't install
Do you want to retry the same edit?

Исправьте ошибки и попробуйте сохранить задание опять.

Посмотреть список уже установленных в cron сценариев можно командой crontab -l:

-bash-2.05b$ crontab -l
0 */3 * * 2,5 /home/u12345/script.pl

Если вам нужно запускать какую-то программу один раз в день, выбирайте ночное время. С с 2 до 8 часов ночи нагрузка на серверы минимальна. Если программа требует больших ресурсов, ночью она выполнится быстрее, чем днём.

Примеры использования cron

  • выполнять задание раз в час в 0 минут — 0 */1 * * * /home/u12345/script.pl
  • выполнять задание каждые три часа в 0 минут — 0 */3 * * * /home/u12345/script.pl
  • выполнять задание по понедельникам в 1 час 15 минут ночи — 15 1 * * 1 /home/u12345/script.pl
  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год — 1 0 5 4 * /home/u12345/script.pl
  • выполнять задание ежемесячно 1 числа в 6 часов 10 минут — 10 6 1 * * /home/u12345/script.pl

Как запустить PHP-скрипт по расписанию

Запускайте скрипты на языке PHP в указанное время с желаемой периодичностью с помощью PHP-CLI интерпретатора.Так может выглядеть команда на запуск скрипта script.php — /usr/bin/php -q $HOME/script.php> /dev/null 2>&1

Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget:

/usr/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

Указывайте путь до утилит полностью, от корня файловой системы. Если в скрипте используются функции require, include, в которых указаны относительные пути — в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию. Или воспользуйтесь встроенной командой cd.

@reboot cd /home/u12345 && ./script.pl

Как получить сообщения об ошибках от программ, запускаемых cron

Вы можете получать сообщения об ошибках при выполнении программ, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого в начале cron-сценария поместите такую строку:

MAILTO=адрес@домен.ru, где «адрес@домен.ru» — это адрес электронной почты, куда придут уведомления. Чтобы указать несколько адресов, введите их через запятую.

Вы будете получать письмо с тем, что выводят скрипты каждый раз, когда cron запускает задачу. Если вы напишете скрипт, который будет печатать строчку «Hello, world» и поставите его на выполнение через cron — вы будете получать письмо со строкой «Hello, world» каждый раз, когда cron запустит такой скрипт.

Если текст, выводимый скриптом, вам не нужен — добавьте в конец строки-сценария для cron символы > /dev/null 2>&1

Полностью строка для cron будет выглядеть так:

0 1 * * * /usr/bin/php -q $HOME/script.php > /dev/null 2>&1

Проверьте корректность синтаксиса скриптов, которые вы устанавливаете на выполнение через cron. Скрипты могут содержать ошибку и работать неодинаково при запуске через веб-сервер и через cron, и так далее. Перед запуском проверьте скрипт командой в unix shell:

/usr/bin/php -l script.php

Если ошибок в скрипте нет, вы увидите сообщение «No syntax errors detected in script.php».

Как запустить сценарий от имени пользователя

Для повышения безопасности системы скрипт запускают от имени определённого пользователя. Убедитесь, что у пользователя есть права на запуск скрипта. Укажите перед основной частью скрипта su -l имя_пользователя, от которого хотите запустить скрипт.

Например, для запуска сервера TeamSpeak3 от имени пользователя ts3server используется следующая команда:

su -l ts3server ./ts3server_startscript.sh start

Скрипт расположен в домашнем каталоге пользователя, куда мы автоматически попадаем при авторизации.

Ограничения

Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов и так далее.

Здравствуйте! Может кто сталкивался с такой проблемой? На VDS (с ISP Manager Lite) сайт DLE 9.7, пробовал настроить запуск по крону.

/usr/bin/php /var/www/юзер/data/www/сайт.ru/cron.php

работает (создается РК БД)

/usr/bin/php /var/www/юзер/data/www/сайт.ru/cron.php?cronmode=sitemap

выдает ошибку «Exited with return code = 1»

Пробовал разными командами и

/usr/bin/wget -O /dev/null http://сайт.ru/cron.php?cronmode=sitemap

то же самое.

В браузере

http://сайт.ru/cron.php?cronmode=sitemap

срабатывает!

Подскажите пожалуйста в чем может быть проблема?

  1. 14.03.2015, 02:31


    #1

    AL50 вне форума


    Banned


    По умолчанию Периодические ошибки в cron после обновления до версии 5.24.0

    В Ispmanager 5 Business 5.24.0 появились периодические ошибки при выполнении задания cron:

    Cron <root@***> /usr/local/mgr5/sbin/usagestat
    ERROR Error: Type: ‘rpc’ Object: ‘query’ Value: ‘query: Timeout was reached’

    За сегодня уже два таких сообщения пришло. На предыдущей версии такого не было.

    Отрывок из лога:
    Mar 13 06:01:01 [11148:1] log INFO Init logs for ‘usagestat’ defaults is: level 5 color is on
    Mar 13 06:01:01 [11148:1] log INFO Defaults for ‘*’ from config: level 5 color is on
    Mar 13 06:01:01 [11148:1] log INFO Settings for module ‘db’ from config: level 4 color is on
    Mar 13 06:01:01 [11148:1] log INFO Settings for module ‘core’ from config: level 4 color is on
    Mar 13 06:01:01 [11148:1] log INFO Settings for module ‘conn’ from config: level 4 color is on
    Mar 13 06:01:01 [11148:1] log INFO Settings for module ‘merge’ from config: level 4 color is on
    Mar 13 06:01:01 [11148:1] log INFO Settings for module ‘xmli’ from config: level 4 color is on
    Mar 13 06:01:01 [11148:1] log INFO Settings for module ‘cache’ from config: level 4 color is on
    Mar 13 06:01:01 [11148:1] log INFO Settings for module ‘longtask’ from config: level 4 color is on
    Mar 13 06:06:01 [11148:1] err ERROR Error: Type: ‘rpc’ Object: ‘query’ Value: ‘query: Timeout was reached’

    Т.е. задание выполнялось 5 минут и отвалилось по таймауту.

    У кого-нибудь такое есть в логах в версии Business 5.24?

    p.s. Посмотреть логи по этой ошибке можно командой
    cat /usr/local/mgr5/var/usagestat.log | grep ERROR

    Последний раз редактировалось AL50; 14.03.2015 в 04:24.


  2. 14.03.2015, 06:17


    #2

    styx вне форума


    Senior Member


    По умолчанию

    Зависит наверное от количества клиентов на сервере, так как у меня с 40 и с 30 на первом и втором такого нет, но было 1 раз сутра на 5.24.0
    Mar 13 04:06:01 [638705:1] err ERROR Error: Type: ‘rpc’ Object: ‘query’ Value: ‘query: Timeout was reached’
    Сейчас я на 5.24.1


  3. 24.03.2015, 17:12


    #3

    AL50 вне форума


    Banned


    По умолчанию

    Как отловить это? Опять была ошибка от usagestat, но у же с другим текстом.

    Tue, 24 Mar 2015 06:02:04 +0300
    Cron <root@*> /usr/local/mgr5/sbin/usagestat:
    Type: ‘rpc’ Object: ‘query’ Value: ‘query: Couldn’t connect to server’

    Куда хоть оно не может подсоединиться? Пользователей на сервере пока отсилы сотня, нагрузка минимальная, памяти свободно вагон.

    usagestat.log:

    Код:

    Mar 24 06:02:04 [21475:1] err ERROR Error: Type: 'rpc' Object: 'query' Value: 'query: Couldn't connect to server'

    Ispmanager Business 5.24.4

    Последний раз редактировалось AL50; 24.03.2015 в 19:14.


  4. 25.03.2015, 01:15


    #4

    usaafko вне форума


    ISPsystem team

    Аватар для usaafko


    По умолчанию

    пропишите в конец /usr/local/mgr5/etc/debug.conf
    *.rpc<tab>9
    и перезапустите панель запустите usagestat
    После этого по rpc будет намного больше информации — куда пыталась подключится панель, какой ответ получила


  5. 25.03.2015, 02:19


    #5

    AL50 вне форума


    Banned


    По умолчанию

    А где смотреть лог rpc?

    В usagestat.log только это:

    Код:

    Mar 24 21:15:17 [14552:1] log INFO Init logs for 'usagestat' defaults is: level 5 color is on
    Mar 24 21:15:17 [14552:1] log INFO Defaults for '*' from config: level 5 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'db' from config: level 4 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'core' from config: level 4 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'conn' from config: level 4 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'merge' from config: level 4 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'xmli' from config: level 4 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'cache' from config: level 4 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'longtask' from config: level 4 color is on
    Mar 24 21:15:17 [14552:1] log INFO Settings for module 'rpc' from config: level 9 color is on


  6. 25.03.2015, 02:27


    #6

    usaafko вне форума


    ISPsystem team

    Аватар для usaafko


    По умолчанию

    Возможно процесс не запустился? Лог тот же, где вы видели ошибку


  7. 25.03.2015, 02:46


    #7

    AL50 вне форума


    Banned


    По умолчанию

    Я сделал killall core, зашёл в панель и через некоторое время запустил руками /usr/local/mgr5/sbin/usagestat.
    О том, что уровень лога для rpc=9 говорит строчка «‘rpc’ from config: level 9 color is on» в usagestat.log.
    Должно ли что-то писаться в лог дополнительно и в какой именно файл при наличии 9-го уровня логирования для rpc?
    Или расширенный лог запишется только в момент появления ошибки?

    Update: Да, лог rpc появился в usagestat.log. Посмотрю в него, если ошибка появится

    Последний раз редактировалось AL50; 25.03.2015 в 04:24.


  8. 25.03.2015, 04:30


    #8

    AL50 вне форума


    Banned


    По умолчанию

    Так… А за что отвечает этот usagestat? Он передаёт статистику на notify.ispsystem.com раз в час? Ошибка походу и возникает, когда этот сервер бывает недоступен.

    Может я чего не понимаю, но я отключил галку «Отправлять сведения об использовании»… С чего вдруг она отправляется?
    Если отключить usagestat, то это не повлияет на работу панели?

    Последний раз редактировалось AL50; 25.03.2015 в 04:32.


  9. 25.03.2015, 05:17


    #9

    usaafko вне форума


    ISPsystem team

    Аватар для usaafko


    По умолчанию

    Вот тут нужно спросить у разработчиков. Покажу им эту тему утром


  10. 25.03.2015, 08:06


    #10

    По умолчанию

    Она отправляет информацию о загруженных модулях. То, что она отправляет, можно посмотреть в файле: var/ispmgr.stat или var/ispmgr.stat.bak — никакой конфиденциальной информации там нет.
    Отправляет она отчет не каждый час, а когда что-то меняется. Видимо от вас статистика еще ни разу успешно не ушла.
    Если отключить это задание, на работу панели это не повлияет.

    И еще, это выдержка из лицензионного соглашения:
    3.8. Лицензиар вправе использовать технические средства защиты авторских прав для целей удаленного мониторинга работы Программного продукта, не уведомляя об этом Лицензиата. Такой мониторинг может осуществляться для следующих целей (включая, но не ограничиваясь): сбор статистической информации о работе Программного продукта, осуществление контроля за правомерностью использования Программного продукта, поиск возможных уязвимостей Программного продукта.

    Последний раз редактировалось Greed; 25.03.2015 в 08:10.


Пытаюсь на хостинге reg.ru в панели управления ispManager создать cron задачу на выполнение одного .php файла. Вроде создаю задачу, но она не выполняется.

Исполняемый файл лежит в корневведите сюда описание изображения

а команда задана таким образомвведите сюда описание изображения

Вроде, я дал необходимые разрешение, но даже исполнение не работает

Дух сообщества's user avatar

задан 13 фев 2020 в 12:22

midnightelf18's user avatar

1

А где ваша крон задача? Сервер работает по другому, для команды должны написать։

/usr/bin/php /var/www/www-root/data/www/vashdomen.ru/counterupdate.php

в вашем случае։

/*
/opt/php/5.3/bin/php зависит от того ,какую версию PHP используйте
*/

/opt/php/5.3/bin/php -f /var/www/user_id/data/www/vashdomen.ru/counterupdate.php

Или можете вызвать через GET т.е

/usr/bin/wget -O /dev/null https://vashdomen.ru/counterupdate.php

в вашем случае։

wget -q -O - https://vashdomen.ru/counterupdate.php > /dev/null 2>&1

PS путь /var/www/www-root/data/www/ у вас может быть другим.

ответ дан 13 фев 2020 в 12:29

Arsen's user avatar

ArsenArsen

5,5132 золотых знака11 серебряных знаков24 бронзовых знака

2


nikone

nikone


  • #1

Вообщем недавно столкнулся с проблемой срабатывания крон в ISP-manager, что пришлось обращаться на фриланс. Здесь опубликую решение (чтобы не потерять и возможно кому-то ещё понадобится).

Сервер на Centos 7 + ISPmanager. Кто пользуется ISP, тот знает, что там есть такое понятие как нативная версия PHP и альтернативная. Так как нативная очень старая, я использую во всех своих проектах 7+, но cron задачи, в любом случае исполняются с нативной версией (5.4.16).

Мне нужно, чтобы сработало вот такое задание:

/usr/bin/php -q /var/www/user/data/www/site.com/public_html/index.php

но на почту приходит ошибка:

PHP Warning: No valid encoded path found in value » for ioncube.loader.encoded_paths. in Unknown on line 0
PHP Fatal error: The file /var/www/user/data/www/site.com/public_html/index.php cannot be run by the ionCube Loader. Please ask the script provider to supply an encoded file that can run on your version of PHP, 5.4. in Unknown on line 0

Разработчик не будет выдавать мне скрипт закодированный старой версией куба.
Как быть в такой ситуации? Как прописать задание, чтобы отрабатывал PHP 7.3 так как там новый куб?


nikone

nikone


  • #2

Решение следующее:
Нужно прописать путь: /opt/php73/bin/php вместо /usr/bin/php.

Если прилетает ошибка:

PHP Fatal error: Uncaught Error: Call to undefined function bffposix_kill() in /var/www/user/data/www/site.com/cron.php:0
Stack trace:
#0 /var/www/user/data/www/site/cron.php(0): CronManager->checkProcesses()
#1 /var/www/user/data/www/site.com/public_html/index.php(0):CronManager->init()
#2 {main}
thrown in /var/www/user/data/www/site.com//cron.php on line 0

нужно проверить, установлено ли дополнение posix.

За последние 24 часа нас посетили 12273 программиста и 810 роботов. Сейчас ищут 184 программиста …


  1. ZION3312

    ZION3312
    Активный пользователь

    С нами с:
    9 ноя 2016
    Сообщения:
    14
    Симпатии:
    0

    Через браузер выполняется
    https://сайт.ру/cron/pay?key=O5v1C0f7

    а в isp планировщике не работает
    /usr/bin/wget -t 1 -O — ‘https://сайт.ру/cron/pay?key=O5v1C0f7’

    Вот как вылядит внутри

    1. require  ‘SourceQuery/bootstrap.php’;
    2. use xPawSourceQuerySourceQuery;
    3. class CronController extends BaseController{
    4.     public $backup_folder = ‘backups’;
    5.     public function actionPay(){
    6.     $getSettings = $this->db->query(‘SELECT * FROM ga_settings’);
    7.     $settings = $getSettings->fetch();
    8.     $settings = json_decode($settings[‘content’], true);
    9.     if(!isset($_GET[‘key’])) parent::ShowError(404, «Страница не найдена»);
    10.     if($settings[‘global_settings’][‘cron_key’] == $_GET[‘key’]){
    11.     $getServers = $this->db->query(‘SELECT * FROM ga_servers WHERE befirst_enabled != «0» or top_enabled != «0» or vip_enabled !=»0″ or color_enabled !=»0″ or gamemenu_enabled !=»0″‘);
    12.     $getServers = $getServers->fetchAll();  
    13.     foreach($getServers as $row){
    14.         if($row[‘befirst_enabled’] != ‘0’){
    15.             if($row[‘befirst_expired_date’] < time()) {
    16.                 $befirst_expired_date = 0;
    17.                 $sql = «UPDATE ga_servers SET befirst_enabled = :befirst_enabled, befirst_expired_date = :befirst_expired_date WHERE id = :id»;
    18.                 $update = $this->db->prepare($sql);    
    19.                 $update->bindParam(‘:befirst_enabled’, $befirst_enabled, PDO::PARAM_INT);                                
    20.                 $update->bindParam(‘:befirst_expired_date’, $befirst_expired_date, PDO::PARAM_INT);      
    21.                 $update->bindParam(‘:id’, $row[‘id’], PDO::PARAM_INT);  
    22.         if($row[‘top_enabled’] != ‘0’){
    23.             if($row[‘top_expired_date’] < time()) {
    24.                 $sql = «UPDATE ga_servers SET top_enabled = :top_enabled, top_expired_date = :top_expired_date WHERE id = :id»;
    25.                 $update = $this->db->prepare($sql);    
    26.                 $update->bindParam(‘:top_enabled’, $top_enabled, PDO::PARAM_INT);                                
    27.                 $update->bindParam(‘:top_expired_date’, $top_expired_date, PDO::PARAM_INT);      
    28.                 $update->bindParam(‘:id’, $row[‘id’], PDO::PARAM_INT);  
    29.         if($row[‘vip_enabled’] != ‘0’){
    30.             if($row[‘vip_expired_date’] < time()) {
    31.                 $sql = «UPDATE ga_servers SET vip_enabled = :vip_enabled, vip_expired_date = :vip_expired_date WHERE id = :id»;
    32.                 $update = $this->db->prepare($sql);    
    33.                 $update->bindParam(‘:vip_enabled’, $vip_enabled, PDO::PARAM_INT);                                
    34.                 $update->bindParam(‘:vip_expired_date’, $vip_expired_date, PDO::PARAM_INT);      
    35.                 $update->bindParam(‘:id’, $row[‘id’], PDO::PARAM_INT);  
    36.         if($row[‘gamemenu_enabled’] != ‘0’){
    37.             if($row[‘gamemenu_expired_date’] < time()) {
    38.                 $gamemenu_expired_date = 0;
    39.                 $sql = «UPDATE ga_servers SET gamemenu_enabled = :gamemenu_enabled, gamemenu_expired_date = :gamemenu_expired_date WHERE id = :id»;
    40.                 $update = $this->db->prepare($sql);    
    41.                 $update->bindParam(‘:gamemenu_enabled’, $gamemenu_enabled, PDO::PARAM_INT);                                
    42.                 $update->bindParam(‘:gamemenu_expired_date’, $gamemenu_expired_date, PDO::PARAM_INT);      
    43.                 $update->bindParam(‘:id’, $row[‘id’], PDO::PARAM_INT);  
    44.         if($row[‘color_enabled’] != ‘0’){
    45.             if($row[‘color_expired_date’] < time()) {
    46.                 $sql = «UPDATE ga_servers SET color_enabled = :color_enabled, color_expired_date = :color_expired_date WHERE id = :id»;
    47.                 $update = $this->db->prepare($sql);    
    48.                 $update->bindParam(‘:color_enabled’, $color_enabled, PDO::PARAM_INT);                                
    49.                 $update->bindParam(‘:color_expired_date’, $color_expired_date, PDO::PARAM_INT);      
    50.                 $update->bindParam(‘:id’, $row[‘id’], PDO::PARAM_INT);  
    51.     }else parent::ShowError(404, «Страница не найдена»);
    52.     public function actionIndex(){
    53.     $mem_start = memory_get_usage();
    54.     $getSettings = $this->db->query(‘SELECT * FROM ga_settings’);
    55.     $settings = $getSettings->fetch();
    56.     $settings = json_decode($settings[‘content’], true);
    57.     if(!isset($_GET[‘key’])) parent::ShowError(404, «Страница не найдена»);
    58.     if($settings[‘global_settings’][‘cron_key’] == $_GET[‘key’]){
    59.         $getServers = $this->db->query(‘SELECT * FROM ga_servers’);
    60.         $getServers = $getServers->fetchAll();
    61.         $Query = new SourceQuery( );
    62.         foreach($getServers as $row){
    63.                 $Query->Connect( $row[‘ip’], $row[‘port’], 2, SourceQuery::GOLDSOURCE);
    64.                 $Info = $Query->GetInfo( );
    65.                 $sql = «UPDATE ga_servers SET status = :status, hostname = :hostname, map = :map, players = :players, max_players = :max_players WHERE id = :id»;
    66.                 $update = $this->db->prepare($sql);    
    67.                 $update->bindParam(‘:status’, $status);                            
    68.                 $update->bindParam(‘:hostname’, $Info[‘HostName’]);      
    69.                 $update->bindParam(‘:map’, $Info[‘Map’]);  
    70.                 $update->bindParam(‘:players’, $Info[‘Players’]);
    71.                 $update->bindParam(‘:max_players’, $Info[‘MaxPlayers’]);
    72.                 $update->bindParam(‘:id’, $row[‘id’]);
    73.                 $sql = «UPDATE ga_servers SET status = :status WHERE id = :id»;
    74.                 $update = $this->db->prepare($sql);                                
    75.                 $update->bindParam(‘:status’, $status);      
    76.                 $update->bindParam(‘:id’, $row[‘id’]);
    77.     }else parent::ShowError(404, «Страница не найдена»);
    78.     $sql = «UPDATE ga_settings SET last_update_servers = $time»;
    79.     echo «server information updated successfully»;
    80.     public function actionTasks(){
    81.         $getSettings = $this->db->query(‘SELECT * FROM ga_settings’);
    82.         $settings = $getSettings->fetch();
    83.         $settings = json_decode($settings[‘content’], true);
    84.         if(!isset($_GET[‘key’])) parent::ShowError(404, «Страница не найдена»);
    85.         if($settings[‘global_settings’][‘cron_key’] == $_GET[‘key’]){
    86.             if($settings[‘global_settings’][‘autoBackupDb’] == ‘1’){
    87.                 $currentDate = date(«d-m-Y»);
    88.                 $hash = «db_».md5(mt_rand(111,999));
    89.                 $name = $currentDate.»-«.$hash.».sql»;
    90.                 $full_path = $this->backupDB($this->backup_folder ,»$currentDate-$hash»);
    91.                 $this->db->exec(«INSERT INTO ga_backup (name, type, date_create, hash) VALUES(‘$name’, ‘database’, «.time().», ‘$full_path’)»);
    92.     private function backupDB($backup_folder, $backup_name){
    93.         $fullFileName = $backup_folder . ‘/’ . $backup_name . ‘.sql’;
    94.         $command = ‘mysqldump -h’ . DB_HOST . ‘ -u’ . DB_USER . ‘ -p’ . DB_PASSWORD . ‘ ‘ . DB_NAME . ‘ > ‘ . $fullFileName;


  2. ADSoft

    1. Определись, крон не работает — то есть даже не пытается запускать скрипт.
    2. Или же с в скрипте косяк с путям.

    Для этого посмотрите логи ошибок
    Может не wget , а как то по другому?


  3. ZION3312

    ZION3312
    Активный пользователь

    С нами с:
    9 ноя 2016
    Сообщения:
    14
    Симпатии:
    0

    Ошибку нашел почти. На другой VDS нормально работает. По этому пришлось перенестись немного.

Ответы

Попробуйте в шелле выполнить команду, возникают какие-нибудь ошибки?

Чтобы регулярно дергать PHP-скрипт, у меня работает такой вариант
/usr/local/bin/wget http://site.ru/page.php

Анонимус 27.03.2012 16:29 

Сокет открывать обычно не обязательно. Это не эффективно и не всегда безопасно.

/usr/bin/php /var/www/user/data/cron/page.php

Узнать, где установлен PHP можно из консоли командой which php

Если сделано через wget, то чтобы результаты работы планировщика не сохранялись во временную папку, нужно добавить параметр —spider

Пример: /usr/local/bin/wget —spider http://site.ru/page.php

Отправить комментарий

Понравилась статья? Поделить с друзьями:
  • Ошибки crc на порту коммутатора что это
  • Ошибки crc на порту cisco
  • Ошибки crc на модеме
  • Ошибки crc на интерфейсе
  • Ошибки crc udma