betiği cron tarafından çağrıldığı zaman çalışacak $ _SERVER ['DOCUMENT_ROOT'] eşdeğerdir?

3 Cevap

I $_SERVER['DOCUMENT_ROOT'] kaçtıklarını nerede dosyaları anlamaya böylece benim yollarını içeren için kullanıyorum ve de cron tarafından işletilen scriptler dışında çalışıyor (Canlı veya evreleme konum olsun yani) Ben yolunu kodlamalısınız hangi.

Ben cron ve tarayıcıdan hem işe yarayabilir kullanabilirsiniz başka bir değişkeni var mı?

3 Cevap

Cron ile PHP komut çalıştırırken, ben CLI bağlamında yerine web sunucusu yürütülür varsayalım. CLI PHP yürütme durumunda, $ _SERVER ['DOCUMENT_ROOT'] doğru doldurulur. Bu geçici bir çözüm için aşağıdaki kodu kullanabilirsiniz:

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

Aşağıda size komut bulunan dizin verecektir:

realpath(dirname(__FILE__));

Bu web istekleri ve cron komut için çalışır.

Yapılacak en iyi şey, size app başka yerden başvuruda bulunabilir kendi sabit tanımlamaktır. Örneğin, MyAppDirectory / public_html / index.php bu gibi bir şey koyabilirsiniz:

define('APPLICATION_PATH', realpath(dirname(__FILE__).'/..'));

Bu size / MyAppDirectory bakılmaksızın index.php adlı veya dahil olduğu geri tutarlı bir referans verecek. Kendi sabit tanımlamak, istediğiniz gibi cron veya tarayıcı aracılığıyla uygulama aramak için izin verir, ama aynı zamanda aşağı izlemek için minimum değişiklik ile çok daha büyük şekillerde depolama yapısını değiştirmek için izin olmaz. Zend Framework onun Zend_Application önyükleme işlemi ile ağır bu kullanır ve "php APPLICATION_PATH" googling ayrıca çeşitli referanslardan sağlayacaktır.