01
Başlamadan önce: Laravel sürümünüz hangi PHP'yi istiyor?
Projenizin composer.json dosyasındaki php ve laravel/framework satırları hangi PHP sürümüne ihtiyacınız olduğunu gösterir. Laravel'in resmi sürüm notlarındaki destek tablosu aşağıda.
PHP sürümünü cPanel'den 8.5'e kadar seçebilirsiniz; Laravel 12 ve 13 bu aralıkta çalışır. Desteği bitmiş bir sürümdeyseniz yükseltmeyi planlayın.
- Laravel 13 (Mart 2026): PHP 8.3 – 8.5, güvenlik desteği 17 Mart 2028'e kadar
- Laravel 12 (Şubat 2025): PHP 8.2 – 8.5, hata düzeltmeleri Ağustos 2026'da bitti, güvenlik desteği 24 Şubat 2027'ye kadar
- Laravel 11: PHP 8.2 – 8.4, desteği 12 Mart 2026'da bitti
- Laravel 10: PHP 8.1 – 8.3, desteği bitti
02
Komut satırı: cPanel Terminal ve ilk kontroller
Geliştirici paketlerinde (HAN-DEV-1…4) kabuk erişimi açıktır. Bu rehberdeki composer, php artisan ve git komutlarını cPanel'deki Terminal ekranında, tarayıcı üzerinden çalıştırırsınız. Kendi bilgisayarınızdan doğrudan SSH bağlantısı kurmak istiyorsanız destek ekibine sorun.
Terminal oturumu CloudLinux CageFS kafesinde açılır: başka hesapların dosyalarını göremezsiniz, root ya da sudo yetkisi yoktur. Sistem paketi gerektiren projeler için VDS sunucu daha uygundur.
İlk olarak php -v çalıştırın: komut satırındaki PHP, web için seçtiğiniz sürümle aynı olmalıdır, çünkü Composer paket uyumluluğunu bu sürüme göre denetler. Farklıysa destek ekibine sorun.
03
Projeyi sunucuya alma: Git ya da dosya yükleme
Projeyi public_html yerine ev dizininizde ayrı bir klasöre koyun; .env ve kaynak kod böylece tarayıcıdan erişilemez.
Paketlerde Git hazırdır; Terminal'de git clone ile depoyu bu klasöre çekebilirsiniz (özel depolar için depo sağlayıcınızda erişim anahtarı ya da belirteci gerekir). Git kullanmıyorsanız projeyi zip olarak cPanel Dosya Yöneticisi'ne yükleyip açın.
vendor ve node_modules klasörlerini yüklemeyin. Vite çıktısı public/build, Laravel'in varsayılan .gitignore listesinde olduğundan depoyla gelmez; npm run build komutunu kendi bilgisayarınızda çalıştırıp bu klasörü ayrıca yükleyin.
04
Composer destekli hosting: bağımlılıkları sunucuda kurma
Geliştirici paketlerinde Composer 2 kuruludur. Terminal'de proje klasörüne geçip composer install --no-dev --optimize-autoloader çalıştırın: --no-dev test ve hata ayıklama paketlerini dışarıda bırakır, --optimize-autoloader sınıf haritasını önceden hazırlar.
Bu komut composer.lock dosyasındaki sürümleri birebir kurar. Sunucuda composer update çalıştırmayın; güncellemeyi kendi bilgisayarınızda yapıp kilit dosyasını gönderin. Kurulum bir eklenti ya da sürüm yüzünden durursa composer check-platform-reqs eksik gereksinimi gösterir.
Laravel'in resmi belgesine göre gereken PHP eklentileri: Ctype, cURL, DOM, Fileinfo, Filter, Hash, Mbstring, OpenSSL, PCRE, PDO, Session, Tokenizer, XML. Eksik görünen olursa destek ekibine bildirin.
05
.env dosyası, APP_KEY ve veritabanı ayarları
cPanel'deki MySQL Databases ekranında bir veritabanı ve kullanıcı oluşturup kullanıcıyı veritabanına tüm yetkilerle ekleyin. cPanel adların başına genellikle hesap adınızı ekler (ör. kullanici_laravel); .env dosyasına bu tam adı yazın.
cp .env.example .env ile dosyayı oluşturun; APP_KEY boşsa php artisan key:generate ile üretin. Yayındaki bir uygulamada anahtarı yeniden üretmeyin: şifrelenmiş veriler çözülemez, oturumlar düşer. Kontrol edilecek satırlar:
APP_ENV=production ve APP_DEBUG=false: hata ayrıntıları ziyaretçiye gösterilmezAPP_URL: sitenin https ile başlayan adresiDB_CONNECTION=mysql: Laravel 11 ve sonrasında yeni projeler SQLite ile gelirDB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD: cPanel'de oluşturduğunuz bilgiler
06
Artisan komutları: migrate, storage:link ve önbellekler
php artisan migrate --force tabloları oluşturur; üretimde Laravel onay ister, --force bunu atlar. Laravel 11 ve sonrasında varsayılan oturum, önbellek ve kuyruk tabloları da bu adımda kurulur.
Yüklenen dosyaları public diskinde tutuyorsanız php artisan storage:link ile public/storage bağlantısını kurun.
Ardından php artisan optimize çalıştırın; komut yapılandırma, rota, olay ve görünüm önbelleklerini (config:cache, route:cache, event:cache, view:cache) birlikte hazırlar. Önbellekten sonra .env okunmaz: bir değeri değiştirdiğinizde komutu yeniden çalıştırın ve env() çağrısını yalnız config dosyalarında kullanın.
07
Laravel cPanel kurulumu: belge kökünü public klasörüne bağlama
Laravel'in resmi dağıtım belgesine göre bütün istekler public/index.php dosyasına gitmelidir; proje kökünü yayına açmak hassas dosyaları internete gösterir. public/.htaccess içindeki yönlendirme kurallarını LiteSpeed de okur, bu dosyayı silmeyin.
cPanel'deki genel yöntemler aşağıda; hesabınıza hangisinin uyduğundan emin değilseniz destek ekibine sorun.
- Ek alan adı ya da alt alan adı: cPanel'in Domains ekranında alan adını eklerken belge kökü (Document Root) olarak
uygulama/public yazın. - Ana alan adı (public_html):
public_html klasörünü yedekleyip yerine projenin public klasörüne sembolik bağlantı (ln -s) koyun ya da public içeriğini public_html'e kopyalayıp index.php içindeki __DIR__.'/../' yollarını proje klasörüne göre düzeltin. - Projenin tamamını
public_html içine koyup .htaccess ile yönlendirmeyin; bir kural atlanırsa .env açığa çıkabilir.
08
storage ve bootstrap/cache izinleri
Laravel storage (günlük, oturum, önbellek, yüklemeler) ve bootstrap/cache klasörlerine yazar. Paylaşımlı hostingde PHP genellikle hesabınızın kullanıcısıyla çalıştığından klasörlerde 755, dosyalarda 644 izni çoğu durumda yeterlidir; 777 vermeyin.
"Permission denied" ya da boş sayfa görürseniz önce storage/logs/laravel.log dosyasını okuyun; eski önbellekler sorun çıkarıyorsa php artisan optimize:clear hepsini temizler.
09
Zamanlanmış görevler: cPanel Cron Jobs ile schedule:run
Zamanlayıcı için tek bir cron satırı yeterlidir; görevler Laravel 11 ve sonrasında routes/console.php, öncesinde app/Console/Kernel.php içinde tanımlanır. cPanel Cron Jobs ekranında sıklığı Once Per Minute seçip komut alanına şunu yazın:
cd /home/kullanici/uygulama && php artisan schedule:run >> /dev/null 2>&1
Cron'daki PHP sürümünün projenizinkiyle aynı olduğundan emin olun; hataları görmek için çıktıyı bir dosyaya yönlendirebilirsiniz. Saniye aralıklı görevlerde schedule:run dakika sonuna kadar açık kalır ve paket sınırlarından pay alır; hostingde dakikalık ya da daha seyrek görevleri tercih edin.
10
Laravel queue işleri: hostingde neler mümkün, sınır nerede?
Laravel'in resmi kuyruk belgesi, queue:work sürecini ayakta tutmak için Supervisor gibi bir süreç yöneticisi önerir. Paylaşımlı hostingde sürekli açık kalan arka plan süreçleri desteklenmez; kalıcı bir kuyruk işçisi çalıştıramazsınız.
Kısa ve seyrek işler için iki yol var. QUEUE_CONNECTION=sync ile işler istek sırasında hemen çalışır. Ya da routes/console.php dosyasına Schedule::command('queue:work --stop-when-empty')->everyMinute()->withoutOverlapping(); ekleyin: işçi bekleyen işleri bitirip kapanır, sonraki dakika yeniden başlar.
Bildirim e-postaları ya da küçük raporlar böyle yürür. Yoğun kuyruklar ve Horizon, Reverb ya da Octane gibi sürekli çalışan bileşenler için root erişimli bir VDS sunucuya geçip işçileri Supervisor ile yönetin.
11
Hangi geliştirici paketi, ne zaman yükseltme?
Tablodaki değerler sunucudaki sınırlardır. Tek uygulama için HAN-DEV-1 (2 GB RAM, %200 CPU limiti, 5 veritabanı) bir başlangıçtır; birden çok proje için ek site sayısı daha yüksek HAN-DEV-2 ya da HAN-DEV-3'e bakın. Cron ve kuyruk işleri web istekleriyle aynı sınırı paylaşır.
Kaynak yetmezse müşteri panelinden daha yüksek bir hosting paketine geçersiniz; fark faturalanır, alt pakete dönülmez. Başka firmadaki sitenizi ücretsiz hosting taşıma formuyla getirebilirsiniz.
Paketlerde LiteSpeed, CloudLinux, Imunify360 ve ücretsiz SSL vardır (ayrıntı: Linux hosting). Hesaplar her gece yedeklenir, son 3 günün yedeği saklanır. Bu bir kolaylıktır; veritabanı dökümünüzü ve .env dosyanızı bulut yedekleme gibi kendi alanınızda da tutun.