PHP 7.4 “mysqli_connect(): No such file or directory” hatası nasıl çözülür? (MySQL soket yolu yapılandırması)

Hatanın Sebepleri

PHP ile MySQL veritabanına bağlanırken “mysqli_connect(): No such file or directory” hatası, genellikle MySQL soket dosyasına erişim problemlerinden kaynaklanmaktadır. Bu hata, MySQL sunucusunun çalışmadığı veya soket dosyasının yanlış bir yere aktarılmış olduğu durumlarda ortaya çıkabilir. Ayrıca, MySQL bağlantısı için kullanılan yapılandırmaların eksik veya hatalı olması da bu hatanın sebebi olabilir.

MySQL Sunucusunun Durumu

Hatanın çözümüne yönelik atılacak ilk adım, MySQL sunucusunun çalışıp çalışmadığını kontrol etmektir. Terminal veya komut satırında aşağıdaki komut kullanılarak servis durumu kontrol edilebilir:

“`bash
sudo systemctl status mysql
“`

Eğer MySQL servisi durmaktaysa, aşağıdaki komut ile başlatmak mümkündür:

“`bash
sudo systemctl start mysql
“`

Sunucu çalışıyorsa, bir sonraki adıma geçilebilir. MySQL bağlantısının doğru bir şekilde yapılandırıldığından emin olunmalıdır.

MySQL Soket Dosyasının Yolu

MySQL soket dosyası, veritabanı bağlantısı için kritik bir bileşendir. Genel olarak, soket dosyası `/var/run/mysqld/mysqld.sock` veya `/tmp/mysql.sock` gibi yollarda bulunur. MySQL yapılandırma dosyasında (genellikle `/etc/mysql/my.cnf` veya `/etc/my.cnf`) soket yolunun doğru ayarlandığından emin olunmalıdır. Yapılandırma dosyasını açmak için aşağıdaki komutlar kullanılabilir:

“`bash
sudo nano /etc/mysql/my.cnf
“`

veya

“`bash
sudo nano /etc/my.cnf
“`

Yapılandırma dosyasını açtıktan sonra `[mysqld]` ve `[client]` bölümlerinde takip edilmesi gereken soket yolunu gözden geçirmek gerekmektedir. Eğer yol hatalıysa düzeltip MySQL servisi restart edilmelidir:

“`bash
sudo systemctl restart mysql
“`

PHP Yapılandırmalarının Kontrolü

PHP’nin MySQL ile iletişim kurabilmesi için doğru yapılandırmalara ihtiyacı vardır. `php.ini` dosyasında MySQL soketinin doğru bir şekilde tanımlandığına emin olunmalıdır. PHP yapılandırma dosyasının yeri genellikle `/etc/php/7.4/cli/php.ini` veya `/etc/php/7.4/apache2/php.ini` şeklindedir. Aşağıdaki komutlar ile ilgili `php.ini` dosyası açılabilir:

“`bash
sudo nano /etc/php/7.4/cli/php.ini
“`

veya

“`bash
sudo nano /etc/php/7.4/apache2/php.ini
“`

Bu dosyada `mysqli.default_socket` direktifinin doğru yolu gösterip göstermediği kontrol edilmelidir. Eğer bu değer boş veya yanlış bir değer içeriyorsa, yukarıdaki doğru soket yolu eklenmelidir. Yapılandırma değişiklikleri yapıldıktan sonra, Apache veya PHP-FPM servisi yeniden başlatılmalıdır. Apache servisi için şu komut kullanılabilir:

“`bash
sudo systemctl restart apache2
“`

Hata Ayıklama

Eğer sorun hala devam ediyorsa, hatanın kaynağını belirlemek için ek adımlar atılabilir. PHP ile MySQL bağlantısı kurmaya çalışmadan önce, terminal veya komut satırında `mysql` komutunu kullanarak MySQL sunucusuna doğrudan bağlanmayı deneyebilirsiniz:

“`bash
mysql -u username -p
“`

Eğer bu komutla başarılı bir şekilde bağlanılıyorsa, PHP konfigürasyonlarıyla ilgili bir problem olabilir. Ayrıca, PHP programında kullanılan bağlantı fonksiyonlarına yönelik hata ayıklama logları oluşturularak, olası hatalar daha iyi anlaşılabilir.

Veritabanı Kullanıcı Yetkileri

MySQL veritabanı kullanıcılarının yetkileri de bağlanma sorunları üzerinde etkili olabilir. Kullanıcının `localhost` üzerinden bağlanmasına izin verilip verilmediği kontrol edilmelidir. MySQL prompt’unda şu komut çalıştırılabilir:

“`sql
SELECT user, host FROM mysql.user;
“`

Gerekirse, veritabanı kullanıcısına uygun yetkiler verilebilir. Örneğin:

“`sql
GRANT ALL PRIVILEGES ON . TO ‘username’@’localhost’ IDENTIFIED BY ‘user_password’;
FLUSH PRIVILEGES;
“`

Sonuç

“mysqli_connect(): No such file or directory” hatasının çözümü için MySQL sunucusunun durumu, soket dosyası yolu, PHP yapılandırmaları, hata ayıklama ve kullanıcı yetkileri gibi pek çok yönün kontrol edilmesi gerekmektedir. Yukarıda belirtilen adımlar, bu hatanın çözümünde rehberlik edecektir. Eğer tüm bu adımlar sonuç vermezse, başka hata kaynaklarını araştırmak ve sistem günlüklerini incelemek gerekecektir.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR