Por que o crontab está dando erro “No such file or directory” quando o arquivo existe?

3

Estou obtendo as três linhas a seguir em uma mensagem de erro em / var / mail / username após o seguinte trabalho ser executado no crontab ...

15 * * * * /Applications/MAMP/htdocs/iconimageryidx/includes/insertPropertyRESI.php

Erros:

/applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 1: ?php: No such file or directory
/applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 3: syntax error near unexpected token ''initialize.php''
/applications/mamp/htdocs/iconimageryidx/includes/insertpropertyRESI.php: line 3: 'require_once('initialize.php');

O script PHP que estou tentando executar EXISTE, de fato, e tenho certeza absoluta de que a ortografia está correta várias vezes. Eu corri um crontab em outro script antes e funcionou muito bem ... alguma idéia ??

O 2º & 3 erros são da linha 3 no script a seguir (aquele que estou tentando executar com o crontab):

<?php
    require_once('initialize.php');
    require_once('insertPropertyTypes.php');

    $sDate;
    if(isset($_GET['startDate'])) {
        $sDate = $_GET['startDate'];
    } else {
        $sDate = '';
    }

    $insertResi = new InsertPropertyTypes('Listing', $sDate, 'RESI');
?>

Quando eu executo meu script insertPropertyRESI.php no navegador, ele funciona muito bem ???? Além disso, initialize.php e insertPropertyTypes.php estão no mesmo diretório que insertPropertyRESI.php

Estou usando o MAMP com PHP 5.3.5

thakns para a ajuda:?

    
por Danny Bullis 22.06.2012 / 15:11

3 respostas

9

Você está tentando executar um script que não tem um shebang válido.
Adicione o shebang como a primeira linha do script assim (ajuste o caminho do curso):

#!/usr/bin/php

Ou altere a entrada do crontab para:

15 * * * * /usr/bin/php /Applications/MAMP/htdocs/iconimageryidx/includes/insertPropertyRESI.php
    
por 22.06.2012 / 15:23
1

A execução de um arquivo php na linha de comando é diferente de executá-lo no servidor da Web, como o apache. Para executar um script php na linha de comando, você precisa:

  1. Instale o pacote php-cli, pois isso pode não ser instalado por padrão.
  2. Verifique se você tem o comentário '! # / usr / bin / php' na primeira linha e certifique-se de definir 'x' permissão no seu script php.
  3. Alternativamente, para 2, basta executar o script chamando-o usando 'php your_script'
por 22.06.2012 / 15:42
1

O motivo pelo qual ele é executado em seu navegador é porque seu servidor está configurado para compilar automaticamente e servir arquivos PHP.

O Cron, por outro lado, não tem esse luxo; por padrão, ele executará qualquer coisa que você colocar como um script bash .

Da aparência do seu Cronjob, você está executando o arquivo PHP sem usar o php parser e, como tal, o Cron tenta executar o script como um script bash .

Se você colocar php -f na frente do local do script PHP, você está dizendo ao Cron para executar o comando usando php parts, você deve descobrir que ele será executado agora.

Como alternativa, você pode editar seu código e preceder #!/usr/bin/php ao início do script. Quando o Cron executar esse arquivo, ele usará php para executar o comando, em vez de bash .

    
por 22.06.2012 / 15:27

Tags