Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vanderlan

Tarefa CRON, arquivo PHP

Recommended Posts

Pessoal,

 

Configurei uma tarefa no CRON do Hostgator e estou recebendo essa mensagem ao ser executada a tarefa.

 

 

O arquivo encontra-se com autorização 755.

 

Alguém por favor poderia me auxiliar?

 

/home/user/public_html/rotina/alerta_prazo.php: line 1: ?php: No such file or directory
/home/user/public_html/rotina/alerta_prazo.php: line 3: require: command not found
/home/user/public_html/rotina/alerta_prazo.php: line 4: require: command not found
/home/user/public_html/rotina/alerta_prazo.php: line 8: =: command not found
/home/user/public_html/rotina/alerta_prazo.php: line 13: syntax error near unexpected token `('
/home/user/public_html/rotina/alerta_prazo.php: line 13: `$PDO = db_connect();'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue.

<?php

require 'init.php';
require 'PHPMailer/PHPMailerAutoload.php';



$sql = "SELECT c.titulo, c.fiscal, c.eps, c.datacontratacao, c.prazoobra, u.email
        FROM controle c
        LEFT JOIN usuarios u ON u.nome = c.fiscal
        WHERE FLOOR(DATEDIFF(STR_TO_DATE(c.prazoobra, '%d/%m/%Y'), CURRENT_DATE())) = FLOOR(DATEDIFF(CURRENT_DATE(), STR_TO_DATE(c.datacontratacao, '%d/%m/%Y')))";

$PDO = db_connect();

$exec = $PDO->query($sql);

if (!$exec)
{
    print_r($PDO->errorInfo());
    exit;
}

$rows = $exec->fetchAll(PDO::FETCH_ASSOC);

foreach ($rows as $row)
{
    
    $emails = array();

    $emails[] = 'pedromakegam@hotmail.com';

    $emailBody = "
    <p>A obra " . $row['titulo'] . ", do fiscal " . $row['fiscal'] . " e da EPS " . $row['eps'] . " chegou à metade do prazo.</p>
    <p>Data de contratação: " . $row['datacontratacao'] . "</p>
    <p>Data de contratação: " . $row['prazoobra'] . "</p>
    ";

    $emailAltBody = strip_tags(nl2br($emailBody));
    $subject = sprintf("Obra '%s' Chegou ao Meio do Prazo", $row['titulo']);

    if (!empty($row['email']))
    {
        $emails[] = $row['email'];
    }

    
    
    if (($error = sendEmail($subject, $emailBody, $emailAltBody, $emails)) !== true)
    {
        echo "Erro ao enviar email sobre obra " . $row['titulo'] . ': ' . $error . PHP_EOL;
    }
   

    echo $emailBody;
    echo "Email enviado para: " . print_r($emails, true) . PHP_EOL;
    echo "<br><br>=======================<br><br>";
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro não é no script, é na forma como agendou a tarefa.

Você colocou só o path ao script. Isso faz o Bash pensar que ele mesmo deve executar o script (só funcionaria se fosse um Shell Script, não um PHP)

 

Você deve agendar usando o interpretador PHP:

 

* * * * * php /path/ao/scripr.php

 

Veja: http://www.vivaolinux.com.br/dica/Agendamento-de-tarefas-no-Linux-(cron-e-at)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.