CPanel Sunucu Güvenliği

cPanel Cron “No input file specified” Hatası ve Çözümü

Herkese merhabalar,

Yıl olmuş 2015 hâlen cron kullanan vardır diye umut ediyorum aranızda. Zira ayıp bir şey değil, gerektiğinde kullanmalı elbette 🙂 Tabii güvenlik için katı kurallar uygulamadıysanız sunucunuzda sistem komutlarını kullanarak kendi “Cron Jobs” betiklerinizi yazabilir ya da var olan open-source betikleri kullanabilirsiniz.

Yo, hayır, zaten çok kullanmıyorum, cPanel üzerinden çalışsa yeter..” diyorsanız da elbette seçim sizin.

Her Şey Tamam. Sorun Ne, Nerede?

cPanel’e girdiniz ve aşağıdaki basit bir job (iş) tanımladınız;

*/5 * * * * php /home/test/public_html/foo/bar/automatic.php?method=save

Kısaca bu iş, her 5 dakikada bir foo/bar dizini altındaki automatic.php çalıştırılması için ayarlanmış oldu. Ancak, dosyanın sonunda method=save parametre ve değeri ile query string mevcut. Bu job (iş) çalıştığında size bildirim olarak aşağıdaki sonuç gelecek;

Status: 404 Not Found
X-Powered-By: PHP/5.3.29
Content-type: text/html

No input file specified.

Durum değeri; 404 Not Found ve mesaj olarak da “No input file specified” denilmiş. Yani, belirttiğin dosyayı bulamadım diyor sistem. Sorun, bir dosya isminin böyle olamayacağında yatıyor, dolayısıyla sistem dosyanızı bulup işletemiyor.

Nasıl Çözeceğiz?

PHP.net üzerinden command line (komut satırı) dokümanlarında, argümanları nasıl işletebildiğimizi inceledikten sonra ilgili job (iş) tanımımızda aşağıdaki gibi bir güncelleme yaparak sorunu çözeceğiz;

*/5 * * * * php /home/test/public_html/foo/bar/automatic.php method=save

Unutmayın ki bir (http) URL değil, dosya işletiyoruz. URL işletmek için wget tercih edebilirsiniz.

Yararlanılan Kaynaklar

Php.net Command Line
Cpanel – Cron Jobs
Nick Bartlett Blogs (bir zamanlar çözüm yazılmış ama sorunun kaynağını yazılmamış..)