Eu tenho um script PHP scheduler Eu preciso do Apache para executar em um cronograma cron. Testar este comando a partir da linha de comando funciona bem:
$ ! test -e /var/www/html/maintenance.flag && cd /var/www/html/shell && /bin/php ./scheduler.php --action cron --mode default
Quando eu testo este script usando o comando mostrado abaixo como meu usuário apache ou o adiciono ao cron apache, recebo este erro: Não foi possível abrir o arquivo de entrada: ./scheduler.php
$ sudo -H -u apache bash -c "! test -e /var/www/html/maintenance.flag && cd /var/www/html/shell && /bin/php ./scheduler.php --action cron --mode default"
Observe que scheduler.php é um link simbólico com leitura / gravação / execução no link e no arquivo de origem ( chmod ug+rwx scheduler.php ./vendor/vendor/package/src/scheduler.php
).
Eu originalmente tentei simplesmente executar php /var/www/html/shell/scheduler.php --action cron --mode default
, no entanto, o script PHP referencia arquivos no mesmo diretório, e é por isso que eu preciso do apache / cron para executar o arquivo dentro desse diretório.
Editar
Tentei usar um arquivo de script, mas ainda estou vendo o mesmo erro.
Criado um cron.sh com o seguinte conteúdo:
#!/bin/bash
cd /var/www/html/shell
#For Testing - remember, this is a symlink file
ls -l 'scheduler.php'
#Run Scheduler
/bin/php ./scheduler.php --action cron --mode always
/bin/php ./scheduler.php --action cron --mode default
Testado com:
sudo -H -u apache bash -c "! test -e /var/www/html/maintenance.flag && /bin/bash /var/www/html/cron.sh"
Saída:
lrwxrwxrwx 1 apache webroot 53 Oct 26 10:36 scheduler.php -> ../vendor/aoepeople/aoe_scheduler/shell/scheduler.php
Could not open input file: scheduler.php
Could not open input file: scheduler.php