Ancak komut satırından cron tarafından çalıştırdığınızda hata ayrıştırmak?

3 Cevap php

Yani şöyle bir PHP komut dosyası çalıştıran bir cronjob var:

0 0 * * * /usr/local/bin/php -f /home/mysite/mysite.com/cronjobs/renewal_email.php

Ben komut satırından aynı komutu ise hatasız çalışır ve l bayrağı ile çalışan hiçbir sözdizimi hataları gösterir. Ancak cron e-postaları aşağıdaki:

Ayrıştırma hatası: sözdizimi hatası, beklenmedik T_OBJECT_OPERATOR

Söz konusu çizgi

$courses[$t->CourseNumber] = $t->course()->CourseName;

Bilgi bu sınırlı miktarda herhangi bir kırmızı bayraklar yükseltmek mi? Bu cron altında değil, komut satırından ne neden herkes görebilir?

/ / Edit DreamHost destek yanıt eklemek için. Senaryo bu değişiklik ile çalışıyor.

Sunucuda PHP'nin varsayılan sürüm PHP4 olduğunu. Sunucunun bulunduğu sürümü belirtmek için yerine Apache daha PATH ayarlarını kullanır olmasıdır. Eğer kabuk php yazarken her zaman ilk çalışır böylece PHP4 / usr / local / bin / php için yol PHP5 yolu / usr/local/php5/bin/php önce gelir.

Eğer tüm yolu belirtmeniz gerekir kabuğundan PHP5 çalıştırmak için:

/usr/local/php5/bin/php --version

Her cron PHP5 tam yolunu belirtmeniz gerekir bu yüzden cron kullanıcı .bash_profile yolunu kullanmak olmaz.

3 Cevap

Hm. Bir PHP4 tercüman PHP5 komut dosyası çalıştıran konum gibi hata mesajı geliyor. Eğer PHP ile aynı yolu kullanmak Ancak, ben bu nasıl olabilirdi göremiyorum.

Eğer do a phpinfo() cron işi var ve çıkış ne olduğunu görebilirsiniz?

PHP 4 için, talimat yeniden olurdu:

$temp = $t->course(); 
$courses[$t->CourseNumber] = $temp->CourseName;

Ben sen PHP iki farklı sürümlerini kullanan söyleyebilirim. Eğer cron sekmesinde kullandığınız farklı bir yol üretmek komut satırından which php çalışan nedir?

Bu hata değişken bir nesne içermiyor demektir. Var_dump deneyin: cron işi çalışırken bunu ing.