Üzerinde çalıştığım küçük bir projeyi wamp üzerinde geliştiriyordum daha sonra Ubuntu’ya geçiş yapmamla birlikte lamp üzerine de geçmeyi istedim. www içindeki proje klasörümü taşıdım, veritabani.php ayarlarımı yaptım, “localhost/proje/” enter… Site çalışmaz 😀 Docker bilseydim böyle olmazdı işte 😀 Docker öğrenmek lazım.

“Veritabanı ayarı mı yanlış acaba?”; kullanıcı adı tamam, şifre tamam, veritabanı adı tamam…

“ee niye hata veriyor?”…

Konsoldan bakıyorum formun post edildiği php dosyasının bulunamadığı hatasını veriyor, kontrol ediyorum: “yoo orada işte dosya” 😀

Ctrl + Alt + T ve subl /var/log/apache2/error.log.. bakıyorum hatalara,

Call to undefined function mysql_connect()

içeren satırlara çarpıyor gözüm. “Mysql ayrıca yükleniyor muymuş?” tepkisi verip araştırmaya koyuluyorum. mysql-client ve mysql-server paketlerini yüklüyorum. Apache2 servisini yeniden başlatıyorum buna rağmen site hala çalışmıyor. Oradan stackoverflow koşarak yetişiyor 😀

PHP 7, mysql* fonksiyonlarını desteklemiyor… alternatif olarak en kısa yöntem mysqli* fonksiyonlarını kullanmak.

Siteyi tekrar çalıştırıyorum, evet gelişme var 🙂 ama hala tam çalışmıyor. Upload işlemlerim başarısız oluyor. Tekrar giriyorum apache2 error loglarına.

move_uploaded_file(): Unable to move '/var/www/html/proje/uploads/'

satırına takılıyor gözüm. E ben izinleri vermiştim ama, işte temel linux eğitimi almayınca izinleri bile yanlış veriyorsun.

Burada önemli bir ayrıntı daha var. WAMP ile çalışırken diyelim “proje” klasörü içerisindesiniz “/dosyalar” yaptığınız zaman “proje/dosyalar” yolunu algılıyor ama LAMP kullanırken böyle olmuyor. Kök dizinden başlamalısınız yolu yazarken.

DÜZELTME: Sonraki denemelerimde WAMP – LAMP arasında dosya işlemleri için bir fark olmadığını gördüm. Kök dizini yazmanıza gerek yok, WAMP’ta ne ise LAMP’ta da o.

sudo chown www-data:www-data /var/www/html/proje/uploads/
sudo chmod 755 /var/www/html/st/belgeler/

komutlarını çalıştırıyorum, çok şükür. Yükleme de yapabildim.


ÖZET

  • PHP 7, mysql* fonksiyonlarını desteklemiyor. Alternatif olarak mysqli* fonksiyonlarını kullanabilirsiniz.
  • move_upload_file() kullanıyorsanız. Sunucunun tmp klasörünü ve upload klasörünün sahiplerini www-data(apache) yapın ve erişim yetkilerini 755 ile ayarlayın.