403 erro proibido do cron

2

Eu tenho algum código php que roda bem em um navegador, mas agora eu quero usar o mesmo código e executá-lo a partir de um script cron que estou recebendo problemas.

eu tentei o comando no cron wget -O /dev/null http://www.mydomain.com/test.php mas se eu tentar isso no terminal eu recebo o erro abaixo.

Qual é o comando correto para executar um arquivo php do cron? e eu preciso adicionar uma linha extra de código para o topo do meu arquivo php?

O problema que estou tendo é

-bash-3.2$ wget -O /dev/null http://www.mydomain.com/test.php
--2012-04-08 15:59:41--  http://www.mydomain.com/test.php
Resolving www.mydomain.com... 46.***.***.1
Connecting to www.mydomain.com|46.***.***.1|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2012-04-08 15:59:41 ERROR 403: Forbidden.

Eu dei ao arquivo 755 permissões e até 777 permissões, mas não consigo ver o que estou fazendo de errado.

    
por user112570 09.04.2012 / 01:08

2 respostas

3

Seu servidor da Web não está configurado para permitir o acesso ao arquivo que você está tentando baixar. Você precisa resolver isso primeiro antes de tentar executar este download a partir do cron.

Primeiro, descubra como seu servidor da web está configurado. Se você estiver usando o apache, poderá encontrar /etc/apache/httpd.conf ou /etc/apache2/httpd.conf ou similar. Esse arquivo deve apontar para você como o seu servidor está configurado.

Em segundo lugar, verifique seu log de erros. Isso deve ser algo como /var/log/apache/error.log . Esse arquivo deve fornecer informações adicionais sobre por que o wget está falhando.

Depure esse problema. Depois de obter o wget funcionando, você pode tentar executá-lo no cron.

Você também pode tentar usar curl em vez de wget. Algo parecido com isto:

curl -s http://www.mydomain.com/test.php >/dev/null

deve funcionar bem também. Eu não tenho uma razão strong para preferir wget ou curl neste caso.

    
por 09.04.2012 / 02:08
2

Provavelmente, não há motivos para executá-lo por meio de uma solicitação de servidor da web / cliente, e isso adiciona complexidade desnecessária. A menos que o script PHP exija o ambiente do servidor da Web (como $ _SERVER ou $ _REQUEST), é melhor executá-lo diretamente.

Para executar um script PHP diretamente do cron:

1 * * * * /usr/bin/php /path/to/your/php/script.php
    
por 09.04.2012 / 01:48

Tags