Paylaşımlı veya yönetilen hosting'de en sık kullanılan panel cPanel'dir. SSH bilmeden grafik arayüzden zamanlanmış görev ekleyebilirsiniz. Bu rehber, resmi cPanel Cron Jobs belgesindeki akışa uygun olarak Cron Email, Common Settings, komut yolu, PHP sürümü ve hata ayıklamayı adım adım anlatır.
Cron job temelini biliyorsanız doğrudan kurulum adımlarına geçebilirsiniz. Zaman ifadesi yazarken crontab sözdizimi ve hazır örnekler için cron expression generator işinizi hızlandırır. Plesk kullanıyorsanız Plesk cron job rehberine, DirectAdmin sunucularda ise DirectAdmin'de cron job ekleme rehberine bakın.
Önemli uyarı (cPanel dokümantasyonu): Görevleri birbirine çok sık aralıklarla koyarsanız önceki çalışma bitmeden yenisi başlayabilir ve sunucu yükü artar. Özellikle uzun süren yedek veya import işlerinde aralığı gerçek süreye göre seçin.
cPanel'de Cron Jobs Sayfasına Erişim
Hosting sağlayıcınız bu arayüzü WHM Feature Manager ile kapatmış olabilir; ikon görünmüyorsa destekten açılmasını isteyin.
- cPanel'e giriş yapın (çoğu kurulumda
https://alanadi.com:2083veyahttps://alanadi.com/cpanel). - Üst arama kutusuna
cronyazın. - Cron Jobs (Türkçe arayüzde çoğu zaman Cron İşleri) öğesine tıklayın.
- Alternatif: Advanced / Gelişmiş bölümünden aynı ikona gidin.
E-posta Bildirim Ayarı (Cron Email)
Sayfanın üstündeki Cron Email alanında, görev çıktısının gönderileceği adresi girip Update Email düğmesine basın. Resmi belgeye göre tüm bildirimleri kapatmak için bu alanı boşaltabilirsiniz. Tek bir iş için postayı susturmak istiyorsanız o komutun sonuna çıktı yönlendirmesi eklenir:
/usr/local/bin/php /home/KULLANICI/public_html/cron/gorev.php >/dev/null 2>&1
Her 5 dakikada bir çalışan işlerde e-posta kutusu hızla dolar. Sık işlerde log dosyası tercih edin; kritik gece işlerinde e-postayı açık bırakmak teşhis için faydalıdır.
Adım Adım Cron Job Oluşturma
Adım 1: Zamanlama (Common Settings)
Common Settings menüsünden hazır aralık seçerseniz Minute/Hour/Day/Month/Weekday kutuları otomatik dolar. Elle girmek isterseniz beş alanı doldurmanız gerekir; cPanel bunları zorunlu tutar.
| Common Settings örneği | Anlamı |
|---|---|
| Once Per Minute (* * * * *) | Her dakika (paylaşımlı planda genelde yasak/limitli) |
| Once Per Five Minutes (*/5 * * * *) | Her 5 dakikada bir |
| Twice Per Hour (0,30 * * * *) | Saatte iki kez (0. ve 30. dakika) |
| Once Per Hour (0 * * * *) | Her saat başı |
| Twice Per Day (0 0,12 * * *) | Günde iki kez (00:00 ve 12:00) |
| Once Per Day (0 0 * * *) | Her gün gece yarısı |
| Once Per Week (0 0 * * 0) | Haftada bir (Pazar 00:00; 0=Pazar) |
| Once Per Month (0 0 1 * *) | Ayın 1'i 00:00 |
- Minute: 0–59
- Hour: 0–23 (sunucu saat dilimine göre)
- Day: 1–31
- Month: 1–12
- Weekday: 0–6 (0=Pazar)
Adım 2: Command alanına komut
Mutlak yol kullanın. cPanel destek makalesindeki örnekler:
PHP (önerilen CLI):
/usr/local/bin/php /home/KULLANICI/public_html/cron/gorev.php
Belirli PHP sürümü (EasyApache / MultiPHP):
/usr/local/bin/ea-php82 /home/KULLANICI/public_html/cron/gorev.php
82 yerine sitenizin sürümünü yazın (74, 80, 81, 83 …). Alternatif disk yolu bazı sunucularda /opt/cpanel/ea-php82/root/usr/bin/php şeklindedir; Terminal'de doğrulayın.
wget / curl ile URL tetikleme:
/usr/bin/wget -q -O /dev/null "https://alanadi.com/cron/gorev.php?key=GIZLI"
/usr/bin/curl -fsS -H "X-Cron-Token: GIZLI" "https://alanadi.com/cron/gorev.php" >/dev/null 2>&1
Bash:
/bin/bash /home/KULLANICI/scripts/yedek.sh
WordPress WP-Cron gerçek zamanlayıcıya taşıma:
/usr/local/bin/php /home/KULLANICI/public_html/wp-cron.php >/dev/null 2>&1
WordPress tarafında DISABLE_WP_CRON kullanımı için WordPress cron job rehberine bakın. PHP CLI ayrıntıları için PHP cron job sayfası uygundur. Hesabınızda WHMCS çalışıyorsa faturalandırmanın işlemesi için gereken günlük görevi de aynı Command alanına eklersiniz; WHMCS cron görevi tanımlama rehberindeki satır bu şekilde taşınır.
Adım 3: Kaydetme ve yönetim
Add New Cron Job ile ekleyin; başarıda arayüz onay mesajı gösterir. Alt tabloda Current Cron Jobs listelenir: Edit / Edit Line ile değiştirir, Delete ile silersiniz.
Gerçek Senaryolar
Senaryo 1: Laravel schedule her dakika
Uygulama kökünde artisan schedule:run çağrılır. Paylaşımlı planda “her dakika” kapalıysa sağlayıcı limitine uyun veya HTTP tabanlı alternatif kullanın.
/usr/local/bin/ea-php82 /home/KULLANICI/public_html/artisan schedule:run >> /home/KULLANICI/logs/scheduler.log 2>&1
Senaryo 2: Gece 02:30 mağaza stok senkronu
Uzun süren iş; günde bir kez yeterli. Aşağıdaki komutta çıktı ve hatalar loga yazılır; bu çıktılar e-postaya gönderilmez. Hata e-postası istiyorsanız 2>&1 yönlendirmesini kaldırın.
/usr/local/bin/php /home/KULLANICI/public_html/cron/stok-senkron.php >> /home/KULLANICI/logs/stok.log 2>&1
Zamanlama: Minute 30, Hour 2, diğerleri * → 30 2 * * *.
PHP Yolunu Bulma
cPanel Terminal veya SSH:
which php
ls -l /usr/local/bin/ea-php*
/usr/local/bin/php -v
/usr/local/bin/ea-php82 -v
Komutu kaydetmeden önce aynı satırı Terminal'de çalıştırın. Çıkış kodu 0 ve beklenen çıktı gelmeden cron'a eklemek teşhisi zorlaştırır.
Sık Hatalar ve Çözümleri
1. /bin/sh: /usr/bin/php: No such file or directory
Neden: Yanlış PHP yolu.
Çözüm: /usr/local/bin/php veya /usr/local/bin/ea-phpXX kullanın.
2. Permission denied
Neden: Script veya log dizini için izin yok. cPanel, özel scriptlerin execute izni gerektirdiğini belirtir.
Çözüm: File Manager → Permissions → dosya için en az çalıştırma izni (ör. 755); log klasörü yazılabilir olmalı.
3. Her çalışmada onlarca e-posta
Neden: Komut stdout üretiyor ve Cron Email dolu.
Çözüm: >/dev/null 2>&1 veya log dosyasına >>; gerekirse Cron Email alanını boşaltın.
4. “Cron job has been added” ama iş etkisiz
Neden: Yanlış home yolu (KULLANICI), PHP sürüm uyumsuzluğu, script içinde göreli path, veya hosting'in minimum aralık limiti.
Çözüm: Terminal'de aynı komutu çalıştırın; echo $HOME ile kullanıcıyı doğrulayın; aralığı 15/30 dakikaya çekip log ekleyin.
5. Could not open input file: .../gorev.php
Neden: Dosya yolu hatalı veya dosya public_html dışında yanlış yerde.
Çözüm: File Manager'da tam yolu kopyalayın; büyük/küçük harfe dikkat edin.
rm yazarken son derece dikkatli olun; yanlış seçeneklerle home içeriğini silebilirsiniz (resmi uyarı).cronjob.com.tr ile HTTP Tabanlı Alternatif
Panelde cron limiti, kapalı Cron Jobs özelliği veya her dakika ihtiyacı varsa ve işiniz bir HTTPS URL ise cronjob.com.tr dışarıdan tetikler. Ücretsizdir; kredi kartı istenmez. En kısa aralık 1 dakikadır; GET/POST ve özel header desteklenir. Sunucunuzu WiseCP paneline taşıdıysanız görev tanımlarını WiseCP cron job kurulumundaki adımlarla yeniden oluşturmanız gerekir; panellerin arayüz yolları birbirinin yerine geçmez.
<?php
// public_html/cron/gorev.php
declare(strict_types=1);
$beklenen = getenv('CRON_SECRET') ?: '';
$gelen = $_SERVER['HTTP_X_CRON_TOKEN'] ?? '';
if ($beklenen === '' || !hash_equals($beklenen, $gelen)) {
http_response_code(403);
exit('forbidden');
}
// iş mantığı
http_response_code(200);
header('Content-Type: text/plain; charset=utf-8');
echo 'ok';
Panelde URL, metot, X-Cron-Token header'ı ve zamanlamayı tanımlayın. Başarı: HTTP 200–399. Timeout aralığa göre (1 dk→55 sn … cron ifadeli→290 sn). Ardışık hata eşiğinde e-posta; her çalışmanın özeti 7 gün logda. TLS doğrulanır; localhost/özel IP'ye istek atılmaz — uç nokta genel internetten çözülmeli.
Sıkça Sorulan Sorular (SSS)
cPanel'de kaç tane cron job oluşturabiliyorum?
Sayı limiti cPanel'in kendisinden çok hosting paketinin Feature Manager ve kaynak politikasına bağlıdır. Bazı paylaşımlı planlarda iş sayısı veya en kısa aralık kısıtlanır; VPS/dedicated'da genelde daha esnektir. Kesin limit için sağlayıcınıza sorun.
cPanel'de cron job'un çalışıp çalışmadığını nasıl anlarım?
Komutun sonuna log yönlendirmesi ekleyin, Cron Email ile çıktı alın veya Terminal/SSH'da komutu elle çalıştırıp çıkış koduna bakın. Script içinde tarih damgalı log satırı yazmak en net yöntemdir.
cPanel olmadan cron job oluşturabilir miyim?
Evet. SSH erişiminiz varsa crontab -e ile tanımlayabilirsiniz. Panelde Cron Jobs özelliği kapalıysa hosting sağlayıcınızın Feature Manager'dan açması gerekir. Ayrıntılar için Linux'ta cron job rehberine bakın.
Hangi PHP yolunu kullanmalıyım: /usr/local/bin/php mi ea-php mi?
Varsayılan CLI için çoğu sunucuda /usr/local/bin/php yeterlidir. Sitenizin MultiPHP sürümüyle birebir aynı binary gerekir; örneğin PHP 8.2 için /usr/local/bin/ea-php82 kullanın. which php ve ls /usr/local/bin/ea-php* ile doğrulayın.
Sonuç
cPanel'de sağlam bir cron: doğru PHP binary, mutlak dosya yolu, bilinçli e-posta/log yönetimi ve kayıttan önce Terminal testi demektir. Limit veya erişim sorunu yaşarsanız HTTP uç noktasını cronjob.com.tr ile zamanlayabilirsiniz.
Hemen Ücretsiz Cron Job Oluşturun
cPanel Terminal'de bir kez doğruladığınız işi URL'ye taşıyın: cronjob.com.tr panelinden tetikleyip her çalışmanın durum kodu, süresi ve hata mesajını 7 günlük kayıtta izleyin. Ücretsizdir; kayıtta kredi kartı istenmez.
Ücretsiz Başla →