Cronjob сохраняет json в неправильный каталог [дубликат]

В 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 / {{1} } Что мне делать, чтобы это исправить?

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

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

1 ответ

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

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

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

Если Вы не хотите изменять сценарий, Вы могли бы сменить работу Крона таким образом:

*/10 * * * * root    cd /var/www/somederictory/somefolder/ && php parse.php > /dev/null
6
ответ дан 1 December 2019 в 15:22

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

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