Bash zaman cron üzerinden yürütülmez komutları - PHP

3 Cevap php

Ben bir PHP komut dosyası her beş dakikada bir çalışan bir cron işi var; PHP komut dosyası komut dosyası sonunda iki bash komutları yürütür. Ben komut nedeniyle ekler bir günlük dosyasına çalıştığını bilirsiniz. Ben Ubuntu Gnome Terminal üzerinden elle PHP komut dosyasını çalıştırdığınızda hem bash komutları sorunsuz yürütmek; PHP betiği cron aracılığıyla tetiklenir ancak, iki bash komutları koştu değildir. Herhangi bir fikir?

$command = 'notify-send "' . count($infoleakPosts) . '  New Posts."';
`$command`;

$command = 'firefox http://example.com';
`$command`;

*/1 * * * * php /home/andrew/grab.php USERNAME PASSWORD # JOB_ID_1

3 Cevap

Genellikle cron komut farklı bir kullanıcı hesabı altında çalıştırmak olacak, ve muhtemelen farklı bir ortam yol kurdunuz.

Sizin komut satırları, yani komuta tam yolunu kullanmaya ayarlamayı deneyin. /path/to/notify-send "x New Posts".

Eğer komut koymak için yol almak için düzenli terminali which notify-send kullanabilirsiniz.

Ayrıca hata ayıklama yardımcı olmak için komut çıktısını yakalayabilir. Işleci kullanılması çıktı dönecektir, böylece bir değişkene atamak ve / veya dökümü.

$output = `$command`;
error_log($output);

Eğer cron altında komut çalıştırdığınız zaman bir çıkış tty veya X-windows DISPLAY env-var dosya yok. Ben komutları çalışıyor ama başarısız olduğunu sanıyorum.

cron ile ilgili yukarıdaki cevaba Yorum: cron crontab kimin olduğunu kullanıcı olarak komutları çalıştırmak olacaktır. Eğer crontab'ın kurmak Yani sizin gibi komutları çalıştırmak olacaktır. Giriş yaptığınızda size olsun bu kabuk başlatma betikleri biraz farklı bir dizi çalıştırmak yok -. Bunun bir tty yoktur ve bu yüzden sadece ~ / bashrc dosyası değil profil dosyaları kümesi yürütür bilir. Ayrıntılar için cron ve bash için man sayfalarına bakınız