$ _SERVER ['DOCUMENT_ROOT'] cron ile çalışan php script çalışmıyor

6 Cevap php

Ben $ _SERVER ['DOCUMENT_ROOT'] kullanmak "/ lib / sft_required.php".; bir PHP komut dosyası 'sft_required' dosyası eklemek. Ben tarayıcı kullanarak bu dosyayı çalıştırdığınızda, iyi çalışıyor ama ben bir cron işi iş olarak bu çalıştırdığınızda, onu çalışmaz. Biz cron yoluyla komut dosyası çalıştırdığınızda dosyası dahil değil gibi görünüyor.

6 Cevap

() Cron çalıştırarak wget örneğin bir cronjob (tarafından tetiklenen bir HTTP isteği ile erişilen bir web sunucusundan karşıt olarak) Eğer cron'nun doğrudan komut dosyası çalıştıran varsayarsak, o zaman tabii ki çalışmaz.

Orada hiçbir sunucu, yani $_SERVER ayarlı değil.

Eğer kendi $ _SERVER ['DOCUMENT_ROOT'] doldurabilirdim

$_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__);

cron dosyası belge kök ise

$_SERVER['DOCUMENT_ROOT'] = dirname(dirname(__FILE__));

cron dosyası bir dizin belge kök üzerinde ise

$_SERVER, bir PHP komut dosyası CLI tercüman kullanarak çalıştırdığınızda, normal değerlerin herhangi içermesi beklenemez. Bir ortam değişkeni yolu koymak, veya bir komut satırı argümanı olarak komut onu geçmek ya.

Ben benzer bir soruyu yanıtladı here. İnsanlar söylediğim gibi, süper küresel $ _SERVER CLI durumlarda tanımlı değil. Linkte DOCUMENT_ROOT konumunu elde etmek için bir (şimdiye kadar) kusursuz bir yöntemdir. Yararlı kanıtlıyor umuyoruz.

Belgeleri Okuma yardımcı olmalıdır. Using PHP from the command line

define('DOCROOT', substr(str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', __FILE__), 0, -1));

Bu size $_SERVER['DOCUMENT_ROOT'] cronjobs için aynı verileri alacak.