drupal cron

18 views
Skip to first unread message

Carlos Aboim

unread,
Jun 17, 2010, 10:57:43 AM6/17/10
to Drupal Portugal
Pessoal não consigo fazer com que o cron trabalhe de jeito nenhum!

como esta escrito na documentação tenho o crontab -e configurado
assim:

59 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php

pois o objectivo é correr o cron.php a cada hora que passa, mas nao
esta a funcionar.

Alguma dica?

Server:
Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8


Obrigado
Carlos Aboim

Diana Soares

unread,
Jun 17, 2010, 11:38:50 AM6/17/10
to drupal-...@googlegroups.com
Qual o erro que dá?
Confirmas que tens o comando /usr/bin/lynx ?

O que acontece quando fazes o seguinte comando na linha de comandos?
$ /usr/bin/lynx -source /var/www/drupal-6.17/cron.php


2010/6/17 Carlos Aboim <abo...@gmail.com>:

> --
> Recebeu esta mensagem porque está inscrito no grupo "Drupal Portugal" dos Grupos do Google.
>
> Para publicar uma mensagem neste grupo, envie um e-mail para drupal-...@googlegroups.com.
> Para anular a inscrição neste grupo, envie um e-mail para drupal-portug...@googlegroups.com.
> Para ver mais opções, visite este grupo em http://groups.google.com/group/drupal-portugal?hl=pt-PT.
>
>

Carlos Aboim

unread,
Jun 17, 2010, 12:54:15 PM6/17/10
to Drupal Portugal
Sim tenho a localização lynx esta correcta

o output é este:

<?php
// $Id: cron.php,v 1.36 2006/08/09 07:42:55 dries Exp $

/**
* @file
* Handles incoming requests to fire off regularly-scheduled tasks
(cron jobs).
*/

include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
drupal_cron_run();

Penso que é o que está dentro do script cron.php

Antonio P. P. Almeida

unread,
Jun 17, 2010, 1:39:43 PM6/17/10
to drupal-...@googlegroups.com, abo...@gmail.com
On 17 Jun 2010 17h54 WEST, abo...@gmail.com wrote:

> Sim tenho a localização lynx esta correcta
>
> o output é este:
>
> <?php
> // $Id: cron.php,v 1.36 2006/08/09 07:42:55 dries Exp $
>
> /**
> * @file
> * Handles incoming requests to fire off regularly-scheduled tasks
> (cron jobs).
> */
>
> include_once './includes/bootstrap.inc';
> drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
> drupal_cron_run();
>
> Penso que é o que está dentro do script cron.php


Isso quer dizer que o lynx está a considerar o ficheiro PHP como um
ficheiro de texto e não como um ficheiro PHP. Era preciso analisar os
headers alguma coisa está mal.

Sugiro usar antes o wget. Aparece alguma coisa nos logs? É possível
invocar o cron de maneiras várias. Pode-se usar o drush, ou ir até

admin/reports/status

e invocar o cron manualmente. O job está instalado?

Fazendo crontab -l aparece listado?

Com o wget é: wget -O - -q -t 1 http://omeusite/cron.php

--- appa

Diana Soares

unread,
Jun 17, 2010, 2:30:18 PM6/17/10
to drupal-...@googlegroups.com
Aaaaiii! que não tinha reparado nessa sintaxe ERRADA:

/usr/bin/lynx -source /var/www/drupal-6.17/cron.php

Obviamente que o lynx está-te a devolver a source do ficheiro, é como abrires
no Firefox com file:///var/www/drupal-6.17/cron.php


Se queres correr directamente o script do sistema de ficheiros, teria
que ser algo como:

$ /usr/bin/php /var/www/drupal-6.17/cron.php

Se é para correr com o lynx ou wget (browsers em modo de texto), tens
que fazer algo como

$ /usr/bin/lynx -source http://example.com/drupal-site/cron.php


2010/6/17 Carlos Aboim <abo...@gmail.com>:

Carlos Aboim

unread,
Jun 18, 2010, 2:47:55 AM6/18/10
to Drupal Portugal
Pois.. esqueci-me de dizer que cron.php é um ficheiro local
ou seja está no disco do sistema e não na web

qnd faço /usr/bin/php surgem-me varios erros, ja experimentei com /usr/
bin/php5 mas os erros são os mesmos:

<-------------------->

Warning: include_once(./includes/bootstrap.inc): failed to open
stream: No such file or directory in /var/www/drupal-6.17/cron.php on
line 9

Warning: include_once(): Failed opening './includes/bootstrap.inc' for
inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/
www/drupal-6.17/cron.php on line 9

Fatal error: Call to undefined function drupal_bootstrap() in /var/www/
drupal-6.17/cron.php on line 10
debian:/home/aboim# /usr/bin/php5 /var/www/drupal-6.17/cron.php

Warning: include_once(./includes/bootstrap.inc): failed to open
stream: No such file or directory in /var/www/drupal-6.17/cron.php on
line 9

Warning: include_once(): Failed opening './includes/bootstrap.inc' for
inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/
www/drupal-6.17/cron.php on line 9

Fatal error: Call to undefined function drupal_bootstrap() in /var/www/
drupal-6.17/cron.php on line 10

<------------->

Utilizando o wget como esta na documentação tudo parece correr bem,
sem erros de execução
mas no admin do drupal a actualização não é notada!!

Diana Soares

unread,
Jun 18, 2010, 5:34:41 AM6/18/10
to drupal-...@googlegroups.com
Então experimenta fazer:

$ cd /var/www/drupal-6.17/
$ /usr/bin/php cron.php

Se tudo correr bem, tenta por assim no cron:

59 * * * * cd /var/www/drupal-6.17/ ; /usr/bin/php cron.php ; cd -


2010/6/18 Carlos Aboim <abo...@gmail.com>:

Carlos Aboim

unread,
Jun 21, 2010, 2:57:50 AM6/21/10
to Drupal Portugal
Ainda não consegui fazer com que o cron trabalhasse, apesar de ter
feito as alterações no comando

59 * * * * cd /var/www/drupal-6.17/ ; /usr/bin/php cron.php ; cd -

Que mais pode ser?

Diana Soares

unread,
Jun 21, 2010, 6:12:58 AM6/21/10
to drupal-...@googlegroups.com
Mas o que acontece quando fazes na linha de comando?

$ cd /var/www/drupal-6.17/
$ /usr/bin/php cron.php


???


2010/6/21 Carlos Aboim <abo...@gmail.com>:

Carlos Aboim

unread,
Jun 21, 2010, 9:59:57 AM6/21/10
to Drupal Portugal
Nada,
parece que tudo corre bem... sem mensagens de erro.. nada!

Mas o cron teima em não actualizar o meu server!
Tlv o cron esteja a correr em background mas alguma coisa no site não
deixe a actualização ser efectivada! Será?

Diana Soares

unread,
Jun 21, 2010, 10:22:57 AM6/21/10
to drupal-...@googlegroups.com
2010/6/18 Carlos Aboim <abo...@gmail.com>:

> Pois.. esqueci-me de dizer que cron.php é um ficheiro local
> ou seja está no disco do sistema e não na web

Como assim? Podes explicar melhor esta parte?
Mas estamos a falar da mesma instalação do Drupal (confirmas que ele
actualiza a base de dados correcta)?

Carlos Aboim

unread,
Jun 21, 2010, 12:25:39 PM6/21/10
to Drupal Portugal
OK com esta dica quis dizer que o ficheiro esta em /var/www/drupal.
6.17/cron.php e não;
em http://www.qualquercoisa.pt/drupal....

Quanto ao cron.php, se for inicializado manualmente atraves da pagina
'status report' do Drupal, tudo é revisto e actualizado sem problema.
Mas automaticamente ele não arranca. Acho que é um problema de SO.
Tenho que fazer uma investigação na web como configurar o cron para
debian

continuo aberto a sugestões e criticas

Diana Soares

unread,
Jun 21, 2010, 6:35:58 PM6/21/10
to drupal-...@googlegroups.com
2010/6/21 Carlos Aboim <abo...@gmail.com>:

> OK com esta dica quis dizer que o ficheiro esta em /var/www/drupal.
> 6.17/cron.php e não;
> em http://www.qualquercoisa.pt/drupal....
>
> Quanto ao cron.php, se for inicializado manualmente atraves da pagina
> 'status report' do Drupal, tudo é revisto e actualizado sem problema.

Mas então ele está disponível via web!
Usando esse link (de quando clicas manualmente) ele funciona....
Quer dizer que está disponível num URL.

Então e o que acontece se correres o comando:

$ lynx -source http://www...................../cron.php

(onde http://www...................../cron.php é o mesmo link que
quando clicas para ele correr manualmente no status report)


> Mas automaticamente ele não arranca. Acho que é um problema de SO.
> Tenho que fazer uma investigação na web como configurar o cron para
> debian

Para veres se ele está a correr, põe este linha (por exemplo) no crontab:

* * * * * touch /tmp/teste


E vê se ele cria o ficheiro /tmp/teste e/ou se actualiza a data do ficheiro.

>
> continuo aberto a sugestões e criticas
>
> On 21 Jun, 15:22, Diana Soares <diana.soa...@gmail.com> wrote:
>> 2010/6/18 Carlos Aboim <abo...@gmail.com>:
>>
>> > Pois.. esqueci-me de dizer que cron.php é um ficheiro local
>> > ou seja está no disco do sistema e não na web
>>
>> Como assim? Podes explicar melhor esta parte?
>> Mas estamos a falar da mesma instalação do Drupal (confirmas que ele
>> actualiza a base de dados correcta)?
>

zorch

unread,
Jun 21, 2010, 11:02:26 PM6/21/10
to Drupal Portugal
Viva!

Verifica as permissões da pasta /var/www, pode ser que a pasta e os
subcontetores não tenham permissão para serem executados a não ser
pelo user do apache!

Filipe

On Jun 21, 11:35 pm, Diana Soares <diana.soa...@gmail.com> wrote:
> 2010/6/21 Carlos Aboim <abo...@gmail.com>:
>
> > OK com esta dica quis dizer que o ficheiro esta em /var/www/drupal.
> > 6.17/cron.php e não;
> > emhttp://www.qualquercoisa.pt/drupal....
>
> > Quanto ao cron.php, se for inicializado manualmente atraves da pagina
> > 'status report' do Drupal, tudo é revisto e actualizado sem problema.
>
> Mas então ele está disponível via web!
> Usando esse link (de quando clicas manualmente) ele funciona....
> Quer dizer que está disponível num URL.
>
> Então e o que acontece se correres o comando:
>
> $ lynx -source  http://www...................../cron.php
>
> (ondehttp://www...................../cron.php é o mesmo link que

Carlos Aboim

unread,
Jun 22, 2010, 3:42:00 AM6/22/10
to Drupal Portugal
fiz o exercicio anterior onde em vez the utilizar o touch utilizei o
echo e o cron criou o ficheiro 'teste' logo posso concluir que o
deamon esta a trabalhar
Estou inclinado para que seja de facto um problemas de permissões do
ficheiro cron.php que não tinha direitos de 'executar' para ninguem.

Alterei e agora vou aguardar mais um pouco para saber se funciona,
modifiquei as definições para mudar de hora a hora.
Ja 'post(o)' o resultado

Antonio P. P. Almeida

unread,
Jun 22, 2010, 4:19:57 AM6/22/10
to drupal-...@googlegroups.com, abo...@gmail.com
On 22 Jun 2010 08h42 WEST, abo...@gmail.com wrote:


> fiz o exercicio anterior onde em vez the utilizar o touch utilizei o
> echo e o cron criou o ficheiro 'teste' logo posso concluir que o
> deamon esta a trabalhar Estou inclinado para que seja de facto um
> problemas de permissões do ficheiro cron.php que não tinha direitos
> de 'executar' para ninguem.

Atenção que o cron.php é um ficheiro de código PHP *normal*. Não é um
script, i.e., não deve ter nenhuma permissão de execução para ninguém.

O bit de execução *não deve* estar activo para o dono, grupo ou
outros.

Não tenho experiência nenhuma com o lynx, só com o wget. A mim
parece-me ser um problema de directórios trocados.

Onde é que o drupal está instalado?

Por regra é má ideia entupir a /var/www com ficheiros. A maneira como
costumo fazer é criar um symlink de /var/www/sites para uma área de
utilizador normal onde estão os ficheiros drupal.

É possível usar a ~<username>/public_html com o módulo userdir
activado no Apache. De notar que é preciso na directiva Virtual Hosts
autorizar o override por causa do .htaccess em cada directório.

AllowOverride All

Nesse caso há também questões de permissões com o settings.php e com a
directoria files. O primeiro tem que ter (no Debian) o www-data como
dono e o grupo do utilizador; a files e todas as que estão por baixo
têm que ter 2770 (setgid - pelo menos) com <utilizador>.www-data como
owner.grupo.

> Alterei e agora vou aguardar mais um pouco para saber se funciona,
> modifiquei as definições para mudar de hora a hora.
> Ja 'post(o)' o resultado

--- appa

Carlos Aboim

unread,
Jun 22, 2010, 4:27:43 AM6/22/10
to Drupal Portugal
continua a não funcionar....

Directiva no crontab:
5 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
#alterei para actualizações a cada 5 min

localização do Drupal:
/var/www/drupal-6.17

Antonio P. P. Almeida

unread,
Jun 22, 2010, 4:46:40 AM6/22/10
to drupal-...@googlegroups.com, abo...@gmail.com
On 22 Jun 2010 09h27 WEST, abo...@gmail.com wrote:

> continua a não funcionar....
>
> Directiva no crontab:
> 5 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
> #alterei para actualizações a cada 5 min

^^^^^^^^^^^^^^^^^^^^^^^^^^
Não. Actualização a cada 5 min é:

*/5 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php

O cron trabalha com a divisão de inteiros. Sempre que o resto é zero
executa.

5 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php

Quer dizer execução aos 5 minutos de cada hora, cada dia de cada
dia da semana, cada mês, e.g., 10h05, 11h05, &c.

O problema não é no cron, o problema é no cron.php. Se o problema
fosse no cron era enviado um mail ao dono do cronjob a dizer que o
cron não tinha executado. Por exemplo se parares o mysqld e o cron
tentar executar o job do Drupal vais receber um mail a dizer que o cron
não conseguiu executar.

Ok. Estive a espreitar o script para o lynx que na directoria scripts
do Drupal. Sempre me pareceu estranho o lynx ir directo ao filesystem
em vez de passar via o servidor HTTP.

Estou a tatear porque não tenho experiência nenhuma com o lynx e o drupal.

Experimenta assim:

*/2 * * * * /usr/bin/lynx -source http://example.com/cron.php > /dev/null 2>&1

Em que example.com deve ser substituido pelo endereço do site na máquina.
Vai executar todos os 2 minutos. Vê o log do watchdog e vê se aparece
a execução do cron bem sucedida.

--- appa

Carlos Aboim

unread,
Jun 22, 2010, 4:57:15 AM6/22/10
to Drupal Portugal
a instrução deve acabar em ....cron.php ou devo acrescentar o
seguinte : > /dev/null 2>&1 ?

On 22 Jun, 09:46, Antonio P. P. Almeida <peru...@gmail.com> wrote:
> On 22 Jun 2010 09h27 WEST, abo...@gmail.com wrote:
>
> > continua a não funcionar....
>
> > Directiva no crontab:
> > 5 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
> > #alterei para actualizações a cada 5 min
>
>                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
> Não. Actualização a cada 5 min é:
>
> */5 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
>
> O cron trabalha com a divisão de inteiros. Sempre que o resto é zero
> executa.
>
> 5 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
>
> Quer dizer execução aos 5 minutos de cada hora, cada dia de cada
> dia da semana, cada mês, e.g., 10h05, 11h05, &c.
>
> O problema não é no cron, o problema é no cron.php. Se o problema
> fosse no cron era enviado um mail ao dono do cronjob a dizer que o
> cron não tinha executado. Por exemplo se parares o mysqld e o cron
> tentar executar o job do Drupal vais receber um mail a dizer que o cron
> não conseguiu executar.
>
> Ok. Estive a espreitar o script para o lynx que na directoria scripts
> do Drupal. Sempre me pareceu estranho o lynx ir directo ao filesystem
> em vez de passar via o servidor HTTP.
>
> Estou a tatear porque não tenho experiência nenhuma com o lynx e o drupal.
>
> Experimenta assim:
>
> */2 * * * * /usr/bin/lynx -sourcehttp://example.com/cron.php> /dev/null 2>&1

Antonio P. P. Almeida

unread,
Jun 22, 2010, 5:06:50 AM6/22/10
to drupal-...@googlegroups.com, abo...@gmail.com
Tanto faz:

> /dev/null 2>&1 está a redireccionar toda a saída para o /dev/null.

Seja o stderr, seja o stdout.

Carlos Aboim

unread,
Jun 22, 2010, 5:19:22 AM6/22/10
to Drupal Portugal
nops..! It's not working...

o engraçado de tudo é que se eu puser este codigo

/usr/bin/lynx -source /var/www/drupal-6.17/cron.php

na linha de comandos ele apresenta-me o codigo que está dentro do
ficheiro: cron.php

o que quer dizer que por algum motivo ele nao está a aceitar o
cron.php como executavel (penso eu!)

Hernâni Borges de Freitas

unread,
Jun 22, 2010, 5:23:56 AM6/22/10
to drupal-...@googlegroups.com
E se fizeres isto?

/usr/byn/lynx -source www.nomedosite.com/cron.php ?

Hernani

/usr/bin/lynx -source /var/www/drupal-6.17/cron.php

--

Antonio P. P. Almeida

unread,
Jun 22, 2010, 5:23:47 AM6/22/10
to drupal-...@googlegroups.com, abo...@gmail.com
On 22 Jun 2010 10h19 WEST, abo...@gmail.com wrote:

> o engraçado de tudo é que se eu puser este codigo
>
> /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
>
> na linha de comandos ele apresenta-me o codigo que está dentro do
> ficheiro: cron.php
>
> o que quer dizer que por algum motivo ele nao está a aceitar o
> cron.php como executavel (penso eu!)

O cron.php não é executável.

Foi colocado o URL e não o path do filesystem como acima?

--- appa

Carlos Aboim

unread,
Jun 22, 2010, 6:03:16 AM6/22/10
to Drupal Portugal
Sim é isto que eu tenho la no crontab:

*/2 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php

o que é o path do filesystem?

Antonio P. P. Almeida

unread,
Jun 22, 2010, 6:12:53 AM6/22/10
to drupal-...@googlegroups.com, abo...@gmail.com
On 22 Jun 2010 11h03 WEST, abo...@gmail.com wrote:

> Sim é isto que eu tenho la no crontab:
>
> */2 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> o que é o path do filesystem?

É o que está acima.

*Não usar*, repito, não usar o path mas sim o *URL*, e.g.:

*/2 * * * * /usr/bin/lynx -source http://omeusite.com/cron.php
^^^^^^^^^^^^

Qual é o URL de acesso ao site? Para ver o site no browser qual o URL?

--- appa

Carlos Aboim

unread,
Jun 22, 2010, 6:47:59 AM6/22/10
to Drupal Portugal
Obrigado Antonio, ja funciona!

Podes explicar nos como funciona?
Como é que o cron.php é chamado se nós não lhe damos o caminho
completo?



On 22 Jun, 11:12, Antonio P. P. Almeida <peru...@gmail.com> wrote:
> On 22 Jun 2010 11h03 WEST, abo...@gmail.com wrote:
>
> > Sim é isto que eu tenho la no crontab:
>
> > */2 * * * * /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
>
>                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> > o que é o path do filesystem?
>
> É o que está acima.
>
> *Não usar*, repito, não usar o path mas sim o *URL*, e.g.:
>
> */2 * * * * /usr/bin/lynx -sourcehttp://omeusite.com/cron.php

Antonio P. P. Almeida

unread,
Jun 22, 2010, 8:01:21 AM6/22/10
to drupal-...@googlegroups.com, abo...@gmail.com
On 22 Jun 2010 11h47 WEST, abo...@gmail.com wrote:

> Obrigado Antonio, ja funciona!
>
> Podes explicar nos como funciona?
> Como é que o cron.php é chamado se nós não lhe damos o caminho
> completo?

Não precisa porque através do server ele resolve o path. Não quer
saber qual é o path real. Na directiva VirtualHost do Apache o URL é
traduzido num path no filesystem através do DocumentRoot.

Suspeito que algo do género:

*/2 * * * * cd /var/www/drupal-6.17 && /usr/bin/php cron.php

Também funcione. A razão porque não funcionava (creio) era porque o
cron não encontrava a directoria de includes do Drupal.

Volta a passar o cron.php para 644. Não é executável nenhum.

chmod 644 cron.php

É um ficheiro cujo código faz o boostrap do Drupal por completo e
depois invoca todas as implementações da hook_cron():

http://api.drupal.org/api/function/hook_cron/6

através da função:

http://api.drupal.org/api/function/drupal_cron_run/6

--- appa

Diana Soares

unread,
Jun 22, 2010, 8:38:41 AM6/22/10
to drupal-...@googlegroups.com
O problema podia ter sido resolvido logo desde o início.....
Isso foi EXACTAMENTE como te disse para fazeres logo na segunda mensagem que enviei:



> 2010/6/17 Diana Soares wrote:
>
> Aaaaiii! que não tinha reparado nessa sintaxe ERRADA:
>
> /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
>
> Obviamente que o lynx está-te a devolver a source do ficheiro, é como
> abrires no Firefox com file:///var/www/drupal-6.17/cron.php
>
>
>Se queres correr directamente o script do sistema de ficheiros,
> teria que ser algo como:
>
> $ /usr/bin/php   /var/www/drupal-6.17/cron.php
>
> Se é para correr com o lynx ou wget (browsers em modo de texto),
> tens que fazer algo como
>
> $ /usr/bin/lynx -source  http://example.com/drupal-site/cron.php
>

:-(


Carlos Aboim

unread,
Jun 22, 2010, 12:00:46 PM6/22/10
to Drupal Portugal
Sorry ;-)
Valeu pela ajuda!

On 22 Jun, 13:38, Diana Soares <diana.soa...@gmail.com> wrote:
> O problema podia ter sido resolvido logo desde o início.....
> Isso foi EXACTAMENTE como te disse para fazeres logo na segunda mensagem que
> enviei:
>
> > 2010/6/17 Diana Soares wrote:
>
> > Aaaaiii! que não tinha reparado nessa sintaxe ERRADA:
>
> > /usr/bin/lynx -source /var/www/drupal-6.17/cron.php
>
> > Obviamente que o lynx está-te a devolver a source do ficheiro, é como
> > abrires no Firefox com file:///var/www/drupal-6.17/cron.php
>
> >Se queres correr directamente o script do sistema de ficheiros,
> > teria que ser algo como:
>
> > $ /usr/bin/php   /var/www/drupal-6.17/cron.php
>
> *> Se é para correr com o lynx ou wget (browsers em modo de texto),> tens que fazer algo como
>
> > $ /usr/bin/lynx -source  http://example.com/drupal-site/cron.php
>
> *
> :-(
Reply all
Reply to author
Forward
0 new messages