PHP PDO MySQL Projesi Hostinger’e Nasıl Yüklenir?

PHP PDO ile yazdığınız bir proje yerel makinede sorunsuz çalışabilir; ancak Hostinger gibi paylaşımlı bir ortama taşıdığınızda dosya yolu, veritabanı kullanıcı adı, PHP sürümü ve dosya izinleri gibi pek çok değişken devreye girer. Bu rehber, bir PHP + PDO + MySQL projesini Hostinger’e yüklerken sıkça karşılaşılan hatalar olmadan, kontrol edilebilir bir akışla yayına almanız için

Google News Google News Flipboard Flipboard Sesli oku Yazıyı beğen Favorilere Ekle 0 Yorumlar
Daha fazla

PHP PDO ile yazdığınız bir proje yerel makinede sorunsuz çalışabilir; ancak Hostinger gibi paylaşımlı bir ortama taşıdığınızda dosya yolu, veritabanı kullanıcı adı, PHP sürümü ve dosya izinleri gibi pek çok değişken devreye girer. Bu rehber, bir PHP + PDO + MySQL projesini Hostinger’e yüklerken sıkça karşılaşılan hatalar olmadan, kontrol edilebilir bir akışla yayına almanız için tasarlandı.

Akış üç ana parçadan oluşur: yükleme öncesi proje hazırlığı, hPanel üzerinden veritabanı ve dosya kurulumu, son olarak da bağlantı yapılandırması ve hata kontrolü. Adımları sırayla uygulamak, “neden çalışmıyor” sorularını büyük ölçüde ortadan kaldırır.

Yükleme Öncesi Proje Hazırlığı

Hostinger’e yüklemeden önce projeyi paylaşımlı hosting ortamına uygun hâle getirmek gerekir. Yerel ortamda çalışan ayarların büyük kısmı canlı sunucuda farklı davranır. Pratikte sorunların önemli bir bölümü, hazırlığı atlamaktan kaynaklanır.

Yerel Projede Kontrol Edilmesi Gerekenler

  • Veritabanı erişim bilgilerilocalhostroot, boş şifre gibi yerel değerler sabit kodlanmış mı? Bunlar bir config.php veya .env dosyasında toplanmalı.
  • Hata gösterimidisplay_errors canlıda kapalı olmalı, ancak geliştirme aşamasında loglama açık kalmalı.
  • Dosya yolları__DIR__ ve dirname(__FILE__) kullanılmalı; mutlak yollar (C:/xampp/... gibi) temizlenmeli.
  • Charset: Tüm tablolar ve PDO bağlantısı utf8mb4 olmalı.
  • Composer bağımlılıklarıvendor/ klasörü ya yüklenmeli ya da SSH üzerinden composer install çalıştırılabilmeli.

Bu kontrolleri tamamladıktan sonra projeyi bir ZIP arşivi olarak hazırlamak, dosyaları tek tek yüklemekten çok daha güvenilir bir yöntemdir.

Hostinger hPanel’de MySQL Veritabanı Oluşturma

Hostinger’in hPanel arayüzünde “Veritabanları” bölümünden yeni bir MySQL veritabanı oluşturulur. Burada üretilen bilgiler, PDO bağlantı satırında kullanılacak temel değerlerdir. Hostinger paylaşımlı planlarda veritabanı adı ve kullanıcı adı genellikle bir önek (örneğin u123456789_) ile başlar; bu önek yerel ortamdaki sade isimlerden farklı olduğu için PDO bağlantısında en sık unutulan ayrıntıdır.

Veritabanı oluşturulduktan sonra phpMyAdmin üzerinden mevcut SQL dökümünü içe aktarabilirsiniz. Büyük dökümlerde phpMyAdmin’in dosya boyutu limiti devreye girebilir; bu durumda SQL’i parçalara bölmek veya Hostinger SSH erişimi ile mysql komutu kullanmak daha sağlıklı bir yoldur.

Bilgi Nereden Alınır PDO’da Karşılığı
Sunucu adı hPanel veritabanı detayı host (genellikle localhost)
Veritabanı adı Oluşturulan DB (ör. u123_app) dbname
Kullanıcı adı Atanan kullanıcı (ör. u123_user) PDO 2. parametre
Şifre Oluşturma sırasında belirlenir PDO 3. parametre
Charset Tablonun karakter seti charset=utf8mb4

Dosyaları Hostinger’e Yükleme Yöntemleri

Hostinger’de dosya yüklemek için üç pratik yol vardır: hPanel’in Dosya Yöneticisi, FTP/SFTP istemcisi (FileZilla gibi) ve SSH. Küçük ve orta ölçekli projeler için Dosya Yöneticisi, büyük veya çok dosyalı projeler için FTP daha verimli çalışır.

Dosya Yöneticisi ile ZIP Yükleme

  1. hPanel içinden hosting hesabını açın, Dosya Yöneticisi bölümüne girin.
  2. public_html klasörüne geçin. Hostinger’de canlıya çıkacak tüm içerik bu klasörün altında olmalıdır.
  3. Hazırladığınız proje ZIP dosyasını yükleyin ve sağ tık menüsünden Extract ile açın.
  4. Açılan klasörün içeriği doğrudan public_html altında olmalı. Eğer iç içe geçmiş bir klasör (örneğin public_html/proje/proje) oluştuysa içeriği yukarı taşıyın.

FTP/SFTP ile Yükleme

  1. hPanel’den FTP hesabı bilgilerini alın: sunucu adresi, kullanıcı adı ve şifre.
  2. FileZilla gibi bir istemciye bu bilgileri girin. Port 21 (FTP) yerine güvenli iletim için Hostinger’in desteklediği SFTP/SSH portunu tercih edin.
  3. Sol panelden yerel proje klasörünü, sağ panelden public_html klasörünü açın ve içerikleri taşıyın.
  4. Yükleme bittikten sonra dosya sayısının doğru olduğunu kontrol edin. FTP kesilmesi sonucu eksik kalan dosyalar paylaşımlı ortamda en zor tespit edilen sorunlardan biridir.

PDO Bağlantı Yapılandırması

Dosyalar yüklendikten sonra projenin Hostinger’deki veritabanına bağlanması gerekir. PDO yapılandırmasını ayrı bir config.php dosyasında toplamak; hem güvenli hem de değişiklik yapması kolay bir yöntemdir. public_html dışına çıkarmanız mümkünse kök dizinin bir üstüne taşıyıp require ile çağırmak ek bir güvenlik katmanı sağlar.

<?php
// config.php — Hostinger paylaşımlı hosting örneği
$host    = 'localhost';
$dbname  = 'u123456789_app';
$user    = 'u123456789_user';
$pass    = 'GUCLU_SIFRE';
$charset = 'utf8mb4';

$dsn = "mysql:host={$host};dbname={$dbname};charset={$charset}";

$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (PDOException $e) {
    error_log('DB connection error: ' . $e->getMessage());
    http_response_code(500);
    exit('Veritabanı bağlantısı kurulamadı.');
}

Bu yapılandırmada dikkat edilmesi gereken birkaç nokta vardır: ATTR_ERRMODE mutlaka ERRMODE_EXCEPTION olmalı; aksi hâlde hatalar sessizce yutulabilir. ATTR_EMULATE_PREPARES‘i false yapmak SQL injection’a karşı daha güçlü bir koruma sağlar. Şifreyi kaynak kodda bırakmak yerine .env kullanmak veya config.php‘yi public_html dışına taşımak ek bir güvenlik adımıdır.

Hata Ayıklama ve .htaccess Yapılandırması

Site açıldığında “500 Internal Server Error” alırsanız önce hata loglarını kontrol edin. hPanel’in hata günlüğü bölümü veya public_html içindeki error_log dosyası, kök nedeni hızlıca gösterir. PHP sürümü uyumsuzluğu, eksik bir uzantı veya yanlış .htaccess yönlendirmesi en yaygın nedenlerdir.

Temiz URL kullanan projeler için tipik bir .htaccess yapılandırması şu şekildedir:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

# Hata gösterimini canlıda kapat
php_flag display_errors off

# Statik dosyalar için tarayıcı cache
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpg "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType application/javascript "access plus 1 week"
</IfModule>

Yaygın Hatalar ve Çözüm Adımları

Paylaşımlı hosting ortamında PHP PDO projelerinde tekrarlayan birkaç hata vardır. Aşağıdaki tablo, hata mesajını gördüğünüzde hangi tarafa bakmanız gerektiğini özetler.

Hata Olası Neden Kontrol Edilecek Yer
SQLSTATE[HY000] [1045] Access denied Yanlış kullanıcı adı, şifre veya yetki hPanel veritabanı kullanıcı listesi
SQLSTATE[HY000] [1049] Unknown database DB adı yanlış yazılmış config.php içindeki dbname
500 Internal Server Error .htaccess yazım hatası veya PHP sürümü uyumsuzluğu hPanel hata günlüğü, PHP sürümü ayarı
Boş beyaz sayfa Açık olmayan hata raporlama + fatal error error_log dosyası
Türkçe karakter bozulması Tablo veya bağlantı charset uyumsuzluğu Tablo collation + PDO charset

Performans ve Güvenlik Kontrol Listesi

Yayına çıkmadan önce aşağıdaki maddeleri tek tek kontrol etmek, sonradan dönüp düzeltmek zorunda kalmamak için iyi bir yoldur.

  • Veritabanı şifresi yeterince güçlü ve özel; başka projelerle ortak değil.
  • Hata gösterimi canlıda kapalı, hatalar dosyaya loglanıyor.
  • Tüm sorgular parametreli prepared statement kullanıyor; doğrudan string birleştirme yok.
  • Dosya izinleri: klasörler 755, dosyalar 644. Yazma izni gereken upload klasörü dışında 777 verilmemiş.
  • SSL sertifikası aktif ve site HTTPS yönlendirmesi yapıyor.
  • config.php gibi hassas dosyalar doğrudan erişime kapalı (mümkünse public_html dışında).
  • PHP sürümü hPanel üzerinden projenin desteklediği güncel sürüme ayarlanmış.
  • Tarayıcı önbelleği statik dosyalar için .htaccess içinden devreye alınmış.
  • İlk istek sonrası bağlantı süresi kabul edilebilir; uzunsa sorgu indeksleri kontrol edilmeli.

Sonuç

PHP PDO MySQL projesini Hostinger’e yüklemek; doğru sırada yapıldığında oldukça öngörülebilir bir süreçtir. Önce yerel projenin paylaşımlı ortama uyumlu hâle getirilmesi, ardından hPanel üzerinde veritabanı kurulumu, sonra dosyaların doğru klasöre yüklenmesi ve son olarak bağlantı yapılandırmasının hata yönetimiyle birlikte yazılması ana akışı oluşturur.

Bu yapı hem küçük tek dosyalık projeler hem de daha karmaşık çok katmanlı uygulamalar için temel iskelet olarak kullanılabilir. Bir sonraki adım olarak proje büyüdükçe Composer kullanımı, .env tabanlı konfigürasyon ve düzenli veritabanı yedekleme rutini eklemek mantıklı bir yol haritasıdır.


Sıkça Sorulan Sorular

1. Hostinger paylaşımlı pakette PDO uzantısı varsayılan açık mı?

Hostinger paylaşımlı planlarda pdo_mysql uzantısı genellikle varsayılan olarak etkindir. hPanel içindeki PHP Yapılandırması bölümünden hangi uzantıların açık olduğu kontrol edilebilir. Eğer could not find driver hatası alıyorsanız uzantı kapalı olabilir; aynı ekrandan açabilirsiniz.

2. Veritabanı bağlantısı için localhost mu yoksa özel bir sunucu adı mı yazmalıyım?

Çoğu Hostinger paylaşımlı planda localhost çalışır. Bazı planlarda hPanel’in veritabanı detay sayfasında “MySQL Hostname” alanında özel bir sunucu adı verilir; bu durumda PDO’da o değeri kullanmak gerekir. Önce panelde belirtilen değere bakmak, ardından kod yazmak en güvenli yoldur.

3. Büyük SQL dökümünü phpMyAdmin’e yükleyemiyorum, ne yapmalıyım?

phpMyAdmin’in dosya boyutu limiti aşıldığında SQL dosyasını parçalara bölmek, gzip ile sıkıştırılmış olarak yüklemek veya Hostinger SSH erişimi olan planlarda mysql -u kullanici -p veritabani < dosya.sql komutunu kullanmak işe yarar. Büyük tablolar varsa indeksleri içe aktarma sonrasında eklemek süreyi belirgin biçimde kısaltır.

4. Projeyi yükledim ama site beyaz sayfa veriyor. Nereye bakmalıyım?

Beyaz sayfa genellikle fatal error ve hata gösteriminin kapalı olmasının birleşiminden kaynaklanır. Öncelikle hPanel’in hata günlüğü bölümü veya public_html içindeki error_log dosyası incelenmelidir. Geliştirme aşamasında geçici olarak ini_set('display_errors', 1) ile mesajları görmek, sorunu bulmayı hızlandırır. Sorun çözüldükten sonra bu satır kaldırılmalıdır.

5. config.php dosyasını public_html dışına taşımak şart mı?

Şart değildir, ancak güvenlik açısından önerilir. public_html dışına taşıdığınız bir konfigürasyon dosyası tarayıcı üzerinden doğrudan erişilemez hâle gelir. Bu mümkün değilse dosyayı içeride bırakıp .htaccess ile erişimi engellemek de uygulanabilir bir alternatiftir.

Bu yazıya tepkin ne?

Yazar Hakkında

Bir Cevap Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.

0/30 karakter