Cron üzerinden PHP Yürütme - No input file specified

6 Cevap php

Ben cron üzerinden bir PHP dosyası çalıştırmak için aşağıdaki komutu kullanarak ediyorum

php -q /home/seilings/public_html/dvd/cron/mailer.php

Sorun aşağıdaki gibi yüklemek için hangi yapılandırma belirleyen yürütme .... dahil olan bir dosyası var olduğunu:

if (!strstr(getenv('HTTP_HOST'), ".com")) {
    $config["mode"] = "local";
} else {
    $config["mode"] = "live";
}

Bu CANLI yapılandırma yüklenirken gerektiği zaman cron YEREL yapılandırma yükleniyor. Ben dosya yerine mutlak yolu http:// URL kullanarak denedim ama dosyayı bulamadı. Ben bunun içinde bir URL kullanmak komutunu değiştirmek gerekir mi?

6 Cevap

Başka basit bir çözüm:

cron:

php -q /home/seilings/public_html/dvd/cron/mailer.php local

php:

if (!empty($argv[0])) {
    $config["mode"] = "local";
} else {
    $config["mode"] = "live";
}

Eğer cron ile php çalıştırdığınızda o zaman ortam değişkeni 'HTTP_HOST' (veya set null) olmayacak çok muhtemeldir ve boş strstr fonksiyonu verildiğinde, {[( mod "local" ayarlanır neden 1)]} döner false olmasıdır.

Eğer komut satırı karşı cron, üzerinden komutu çalıştırdığınızda muhtemelen ortam değişkenlerinin farklı bir dizi alıyoruz. Eğer PHP komutunu çalıştırmadan önce istediğiniz şekilde çevreyi kurar sarıcı komut dosyası yazmak gerekebilir.

Gibi Çevre değişken HTTP_HOST web sunucusu altında php scrints çalıştırıyorsanız, yalnızca zaman var. Ama sizin crontab config elle ekleyebilirsiniz:

## somewhere in crontab config
HTTP_HOST=somthing.com
15 * * * * /path/to/your/script > /dev/null 2>&1

Bu üretim sistemleriyle çalışan olduğunu düşünmeye için komut sağlayacaktır.

Eğer tembel hissettiğiniz ve emin tüm bu env değişkenler çalışması yapma gibi hissediyorum yoksa kullanarak cron ile çalışan denemek isteyebilirsiniz:

lynx -dump http://url.to.your.script> / Dev / null