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/
Что я должен сделать, чтобы это исправить?
Изменить: Это не дубликат, PHP работает, JSON сохраняется, но неправильно. И я прошу помочь мне понять, что не так с текущими настройками Cron.
1 ответ
По умолчанию задания 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