Cronjob salva json em um diretório errado [duplicado]

3

Existe um trabalho Cron no Ubuntu 16.04 que executa um script PHP

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

para analisar dados em um arquivo JSON. O script PHP deve gravar dados dentro da mesma pasta onde este script PHP está localizado, mas eu enfrentei um problema que o JSON está sendo salvo no diretório home do root:

ÉassimqueeuconfigurootrabalhodoCron:

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

Doterminal:

ssh [email protected] cd /etc crontab -e :x

Em poucas palavras: JSON está sendo salvo em /root , enquanto eu quero que ele seja salvo em /var/www/somederictory/somefolder/ O que devo fazer para corrigir isso?

Editar: Não é uma duplicata, o PHP funciona, o JSON está sendo salvo, mas de maneira errada. E estou pedindo para me ajudar a entender o que está errado com as configurações atuais do Cron.

    
por vNottbeck 02.03.2018 / 12:02

1 resposta

6

Por padrão, as tarefas Cron são executadas no diretório pessoal do usuário. Enquanto no seu script não é fornecido o caminho onde o arquivo de saída a ser salvo, ele será salvo no diretório onde o script é executado.

De acordo com a pergunta, você deseja gerar o arquivo .json no mesmo diretório em que o script está localizado. Então (neste caso) você tem que mudar seu código de alguma forma, similar a isso:

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

Se você não quiser alterar o script, poderá alterar o trabalho Cron dessa maneira:

*/10 * * * * root    cd /var/www/somederictory/somefolder/ && php parse.php > /dev/null
    
por pa4080 02.03.2018 / 12:36