O Cron executará os itens www.data. Você pode verificar isso com este teste simples:
$ sudo crontab -u www-data -e
Adicione esta entrada:
* * * * * date >> /tmp/date.out
Agora examine a saída com:
$ tail -f /tmp/date.out
Depois de ter feito isso para garantir que seu crontab esteja funcionando, você pode trabalhar com os scripts que deseja executar.
o usuário www-data
, embora não tenha o mesmo caminho que você, portanto, muitos comandos que funcionam na sua conta não funcionarão do usuário www-data
, a menos que você defina especificamente o caminho para esse script. O caminho padrão do www-data contém apenas: PATH=/usr/bin:/bin
Você pode fazer isso exportando sua lista de caminhos e colocando-a em uma lista de caminhos para o script.
Você pode fazer isso com:
$ echo $PATH > ~/mypath.txt
Agora acrescente o texto do ~ / mypath.txt ao topo do seu script como:
Seu script:
#!/bin/bash
export PATH=$PATH:/home/users/l/j/ljames/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# rest of your script code here.
Você pode ajustar o caminho removendo alguns itens óbvios que você não estará usando, como no caso do meu exemplo:
/home/users/l/j/ljames/bin
/usr/games
/usr/local/games
/snap/bin
Isso deixaria a linha de caminho do script com:
#!/bin/bash
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# ... rest of your script code here
script PHP executado no cron
O script de teste do php ( /home/users/l/j/ljames/test.php
)
#!/usr/bin/php
<?php
$string='date';
print "Output from PHP script: $string";
?>
A entrada do crontab do php
* * * * * php /home/users/l/j/ljames/test.php >> /tmp/date.out
Você pode examinar a saída com:
$ tail -f /tmp/date.out
Output from PHP script: Fri Feb 3 14:46:01 EST 2017
Output from PHP script: Fri Feb 3 14:47:01 EST 2017
Output from PHP script: Fri Feb 3 14:48:01 EST 2017
A saída verifica se o crontab executará seus scripts php. Ele mostra que o culpado é o script real, que deve ser depurado para funcionar adequadamente fora do cron primeiro. O provável culpado seria a lista de caminhos do ambiente.
Nota:
Seu sistema com seus scripts de servidor da web executados como usuário www-data
será mais seguro do que se fossem executados como você ou root. Se eles fossem como você, o script teria acesso a todos os itens aos quais você tem acesso e, se o seu servidor web estivesse comprometido, ele poderia até ter acesso root com sudo
. Com os scripts do servidor da web run-as www-data
, um servidor comprometido poderá acessar apenas o servidor. Que, se feito em backup, seria mais fácil de corrigir do que ter que lidar com todo o seu servidor.