В 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.
По умолчанию задания 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
По умолчанию задания 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