Cron не вставляет запись в базу данных [dубликат]

Этот вопрос уже имеет ответ здесь: php /var/www/html/*.php не работает в терминале, который открыт из меню php * .php работает в терминале, который открыт внутри php hold folder 2 отвечает [ ! d0]

В Ubuntu 16.04 есть работа Cron, которая запускает скрипт PHP

$parseinfo = 'parseme.json'; $handle = fopen($parseinfo, 'w'); fwrite($handle, json_encode($res));

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

Вот как я установил задание Cron:

*/10 * * * * root /usr/bin/php /var/www/somederictory/somefolder/parse.php > /dev/null

От терминала:

ssh root@example.com cd /etc crontab -e :x

Короче говоря: JSON сохраняется в /root, пока я хочу, чтобы он был сохранен в /var/www/somederictory/somefolder/ Что мне делать, чтобы исправить это?

Изменить: это не дубликат, PHP работает, JSON сохраняется, но неправильно. И я прошу помочь мне понять, что не так с текущими настройками Cron.

3
задан 13 March 2018 в 16:25

2 ответа

По умолчанию задания Cron выполняются в домашнем каталоге пользователя. Хотя в вашем скрипте не указан путь, в котором будет сохранен выходной файл, он будет сохранен в каталоге, где выполняется скрипт.

В соответствии с этим вопросом вы хотите сгенерировать файл .json в тот же каталог, где находится скрипт. Поэтому (в этом случае) вам нужно каким-то образом изменить свой код, аналогично этому:

$parseinfo = 'parseme.json'; $path = realpath(dirname(__FILE__)); $handle = fopen("$path/" . $parseinfo, 'w'); fwrite($handle, json_encode($res));

Если вы не хотите менять скрипт, вы можете изменить задание Cron таким образом:

*/10 * * * * root cd /var/www/somederictory/somefolder/ && php parse.php > /dev/null
6
ответ дан 17 July 2018 в 16:11

По умолчанию задания Cron выполняются в домашнем каталоге пользователя. Хотя в вашем скрипте не указан путь, в котором будет сохранен выходной файл, он будет сохранен в каталоге, где выполняется скрипт.

В соответствии с этим вопросом вы хотите сгенерировать файл .json в тот же каталог, где находится скрипт. Поэтому (в этом случае) вам нужно каким-то образом изменить свой код, аналогично этому:

$parseinfo = 'parseme.json'; $path = realpath(dirname(__FILE__)); $handle = fopen("$path/" . $parseinfo, 'w'); fwrite($handle, json_encode($res));

Если вы не хотите менять скрипт, вы можете изменить задание Cron таким образом:

*/10 * * * * root cd /var/www/somederictory/somefolder/ && php parse.php > /dev/null
6
ответ дан 23 July 2018 в 17:05

Другие вопросы по тегам:

Похожие вопросы: