Cron php www data

Содержание
  1. How to PHP to set up a crontab job that runs as www-data?
  2. 4 Answers 4
  3. BASH-create a ‘www-data’ crontab that runs a PHP file
  4. 2 Answers 2
  5. 👥 Запуск Crontab от имени пользователя www-data на Linux
  6. Шаг 1: Определим пользователя
  7. Шаг 2: Планирование задания Cron
  8. Шаг 3: Проверка задания Cron
  9. Заключение
  10. You may also like
  11. 📜 Чтение файла построчно на Bash
  12. 📧 В чем разница между IMAP и POP3
  13. ✔️ Как управлять контейнерами LXD от имени обычного.
  14. 📜 Руководство для начинающих по созданию первого пакета.
  15. Феноменальная популярность электроники Xiaomi: основные причины
  16. 📜 Получение вчерашней даты в Bash: Практическое руководство
  17. Использование специальных гелей при мышечных болях
  18. 📦 Как расширить/увеличить файловую систему VxFS на Linux
  19. Услуги по размещению серверного оборудования в ЦОД
  20. Для чего выполняется ИТ консалтинг на предприятиях?
  21. 2 комментария
  22. Leave a Comment Cancel Reply
  23. • Свежие записи
  24. • Категории
  25. • Теги
  26. • itsecforu.ru
  27. • Страны посетителей
  28. IT is good

How to PHP to set up a crontab job that runs as www-data?

My server is running on Ubuntu 14.04 and nginx. My problem concerns Cron, I’d like to start it (crontab) using a file — cron.txt, its contents:

* * * * * /usr/bin/php /var/www/html/test.php >> /var/log/cron.log 

If I run it using the command: crontab /var/www/html/cron.txt , it works perfectly, script test.php is being executed. But, when I do the same using a PHP script (executing via browser): exec(‘crontab /var/www/html/cron.txt’); , it doesn’t work. Checking current cronjob by command: crontab -l -u www-data , the line from the file appears, but Cron does not do its job. Maybe it’s related to some permission issues? Because it only works by executing as a root. Is there a way to force Cron to do www-data’s tasks as well?

4 Answers 4

I do not clearly understand what are you trying to achieve. As far as I understand you need to execute a cron job as www-data user. Usually (is highly recommended) www-data user does not have access to shell. But you can execute cron tasks as www-data, placing your tasks in the root cron as follows:

* * * * * su www-data -s /bin/bash -c "/usr/bin/php /YOUR_PATH/task.php" 

This is also a clean way, as you have all the cron jobs of the system centralized in one file, but each tasks runs as the needed user (with the proper permissions and attributes).

You can change the * * * * parameters in order to adjust the schedule of your job. In my example it runs every one minute.

You want something strange. Why you execute crontab from php script? Crontab is a time-based job scheduler, it shouldn’t run from php script. If you want start cronjob as www-data, you should configure it by command crontab -u www-data -e and after this your job would be executed as you configured it.

Читайте также:  Collection java fail fast

It’s all about sending emails, because I want to send like 50 emails every 10 minutes. When a user starts the mailing, a php script starts cron and when sending emails is done, a php script stops cron. That’s my idea for this.

That’s not what cron is for. Suggest you close this question and ask a question at a high level — ie what you want to achieve, rather than asking us low level questions. You can cut down a tree with a spoon, but it’s much easier if you use the correct tool.

@BociucH it strange. You could configure your crontab like this */10 * * * * and make limit for mail sending for 50 e-mails. Cron shouldn’t be executed inside script, it’s wrong way.

I managed to achieve what I wanted, everything about the code in my initial post is ok, the only thing I should’ve known is that the www-data user is not allowed to write in /var/log , so I had no output there. And in addition, in my PHP script I was trying to create a file and write something into it, to do is, the absolute path is required, so it should look like:

dirname(__FILE__) . '/myfile.txt'; 

After these changes, everything works as expected.

Nextcloud needs the same thing. They don’t seem able to get PHP to set up a Cron job in their installer and insist that the Linux admin do it.

So, for your first Q: How do I use PHP to set up a www-data crontab job? A: You don’t, that needs to be done from Shell.

As for your second Q: Can crontab run a www-data job? A: Totally, but that part is done at the time the crontab job is set up. Using www-data to execute a cron job from inside any cron file is a bad idea, just let www-data run the crontab job itself.

* * * * * php -f /var/www/html/test.php >> /var/log/cron.log

From the terminal, set up Cron this way:

crontab -u www-data -e . add the string to run, similar to in your Q.

. But, you seem to want to use PHP to set up the crontab job. (I assume this is a PHP installer.) Having a PHP app set up a crontab job might not be possible. It might not even be a good idea. If you can do it, be sure to let Nextcloud devs know because they don’t seem to know how either.

Читайте также:  Idn to ascii php

Источник

BASH-create a ‘www-data’ crontab that runs a PHP file

I need to get this to run in a cron file in /etc/cron.d/ : */15 * * * * php -f /var/www/nextcloud/cron.php . but, my scripts don’t run. It’s permissions are set to 644 and I need to create it with a Shell/BASH script. I’m using: echo «*/15 * * * * php -f /var/www/nextcloud/cron.php» > /etc/cron.d/nccron What am I doing wrong?

2 Answers 2

There is an much easier way (must be done as root user)

echo ‘*/15 * * * * www-data php -f /var/www/nextcloud/cron.php’ > /etc/cron.d/wwwcron

I’d use SINGLE quotes not DOUBLE quotes to prevent any possibility of expansion of the ‘*’ metasymbol.

  1. To run a PHP cron job, www-data needs to do a crontab job itself, using php -f as the [user] inside the cronjob line:

*/15 * * * * php -f /var/www/nextcloud/cron.php

(These are Nextcloud instructions. They got it right, don’t try to hack this, in my case.)

Normally, this is set up from the terminal:

Running as root in this example.

crontab -u www-data -e . add the cronjob string (above).

crontab -u www-data -l . and it should match.

But, I need this done as a script, not crontab -e in the terminal.

crontab jobs are in: /var/spool/cron/crontabs/USER

with permissions: -rw——- . www-data crontab

Running as root in this example.

echo "*/15 * * * * php -f /var/www/nextcloud/cron.php" >> /var/spool/cron/crontabs/www-data chown www-data:crontab /var/spool/cron/crontabs/www-data chmod 600 /var/spool/cron/crontabs/www-data 

Источник

👥 Запуск Crontab от имени пользователя www-data на Linux

В системе Linux демон cron используется для выполнения запланированных команд или скриптов.

По умолчанию задания cron запускаются от имени пользователя root.

Однако иногда необходимо запускать задания cron от имени пользователя, не являющегося root, например, пользователя www-data.

Пользователь www-data часто используется веб-серверами для запуска веб-приложений и обычно применяется в целях безопасности, чтобы ограничить ущерб, который может быть нанесен вредоносным заданием cron.

В этой статье мы обсудим, как правильно запускать crontab от имени пользователя www-data в системе Linux.

Шаг 1: Определим пользователя

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

В данном случае мы хотим запустить задание cron от имени пользователя www-data.

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

На скриншоте выше, в первой строке показан пользователь ‘root’ для apache2.

Это основной процесс Apache, запущенный системной службой deamon.

Остальные запущены под пользователями ‘www-data’.

Шаг 2: Планирование задания Cron

Следующим шагом будет создание файла crontab для пользователя www-data.

Файл crontab используется для указания команд или скриптов, которые вы хотите запускать на регулярной основе.

Читайте также:  Затемнение блока при наведении css

Чтобы создать файл crontab для пользователя “www-data”, вы можете использовать следующую команду:

Теперь, когда у нас открыт файл crontab, мы можем добавить задание cron, которое мы хотим запустить.

Например, у вас в системе настроено приложение Laravel, и вы хотите запланировать запуск задания cron каждую минуту. вы добавите следующую строку в файл crontab:

## Laravel application cron to run every minute * * * * * cd /var/www/laravel-app && php artisan schedule:run >> /dev/null 2>&1

Шаг 3: Проверка задания Cron

Вы можете увидеть, что задание cron для приложения Laravel правильно настроено с пользователем www-data.

Заключение

В этой статье мы обсудили, что запуск crontab от имени пользователя www-data в системе Linux является полезным методом для ограничения ущерба, который может быть нанесен вредоносным заданием cron.

Процесс включает в себя определение пользователя, создание файла crontab, добавление задания cron, сохранение и закрытие файла crontab и, наконец, проверку задания cron.

С помощью этих шагов вы можете убедиться, что ваши задания cron выполняются от имени нужного пользователя и что ваша система находится в безопасности.

itisgood
⚓ Команда fallocate на Linux: Руководство с примерами
Как сделать мобильное приложение самому

You may also like

📜 Чтение файла построчно на Bash

📧 В чем разница между IMAP и POP3

✔️ Как управлять контейнерами LXD от имени обычного.

📜 Руководство для начинающих по созданию первого пакета.

Феноменальная популярность электроники Xiaomi: основные причины

📜 Получение вчерашней даты в Bash: Практическое руководство

Использование специальных гелей при мышечных болях

📦 Как расширить/увеличить файловую систему VxFS на Linux

Услуги по размещению серверного оборудования в ЦОД

Для чего выполняется ИТ консалтинг на предприятиях?

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

Leave a Comment Cancel Reply

• Свежие записи

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

Введение Любое программное приложение должно вести журнал событий для их регистрации. В частности, логи доступа Nginx записывают IP-адреса клиентов, URL-адреса и коды состояния…

Память смартфона — самый ценный ресурс, и часто ее не хватает. Сколько бы ни оставалось на телефоне свободного места, оно неизбежно заканчивается. Рано…

Интернет вещей (IoT) появился как новаторская технология, которая меняет то, как мы взаимодействуем с окружающим миром. Это относится к взаимосвязи физических устройств, транспортных…

Процесс QA тестирования QA тестирование обеспечивает контроль за качеством разрабатываемой программы, то есть дает гарантии, что в конечном ПО нет ошибок. При этом…

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

Источник

Оцените статью