PHP - MySQL bağlantısı çalışmıyor: 2002 gibi bir dosya ya da dizin yok

7 Cevap php

WordPress kullanmayı denediniz ve işe asla. Apache ve mysql çalışıyor olması, hesapları ve veritabanı tüm ayarlanır, no yazım hataları vardır. Yani basit bir bağlantı yapmaya çalıştım:

<?php
    $conn = mysql_connect('localhost', 'USER', 'PASSWORD');
    if(!$conn) {
        echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
    }
?>

Ve ben hep bu olsun:

Error: 2002 - No such file or directory

Hangi dosya veya dizin? Herhangi bir fikir ne bu neden olabilir? Teşekkürler.

Apache ve MySQL x86_64 dmg yükleyici yerleşik Ayrıca, ben, bir mac, Snow Leopard üzerinde değilim.

GÜNCELLEME: Tamam, soket / tmp / mysql.sock altında olduğunu buldu, böylece php.ini, ben bu konuda yanlış yolun tüm tekrarlarını değiştirilir. Şimdi çalışıyor olmadığını görürsünüz.

7 Cevap

Eğer Linux kullanıyorsanız: mysql.sock dosyasının yolu yanlıştır. Eğer (lampp) XAMPP kullanıyorsanız ve / tmp / mysql.sock değil çünkü bu genellikle

Php.ini dosyasını açın ve bu satırı bulun:

mysql.default_socket

Ve bunu yapmak

mysql.default_socket = /path/to/mysql.sock

Ben benzer bir sorun vardı ve 127.0.0.1 yerine localhost ile benim mysql hitap ederek çözmek mümkün oldu.

Bu muhtemelen benim ana kurulum yanlış bir şey var demektir, ancak bu hızlı bir düzeltme olsun bana şu an için gidecek.

Ben php.ini dosyasını kontrol ve mysql.default_socket doğru ayarlanmış olduğunu doğrulayın ve ayrıca mysqld doğru erişebileceği bir soket dosya ile yapılandırılmış olduğunu doğrulamak istiyorum. Tipik default "/ tmp / mysql.sock" dir.

Bu Mac OS X native installation of Apache HTTP ve custom installation of MySQL ile içindir.

Cevap @ alec-Gorge mükemmel cevaba dayanarak, ama benim yapılandırma yapılandırılmış olması bazı özel değişiklikler google vardı, çoğunlukla Mac OS X özgü, ben bütünlüğü uğruna buraya eklemek istiyorum düşünülmektedir.

Enable PHP5 support for Apache HTTP

PHP5 desteği /etc/apache2/httpd.conf etkin olduğundan emin olun.

sudo vi /etc/apache2/httpd.conf (sorulduğunda parolanızı girin) ve yorumsuz (remove ; başından itibaren) çizgi php5_module modülü yüklemek için dosyayı düzenleyin.

LoadModule php5_module libexec/apache2/libphp5.so

sudo apachectl start (veya restart zaten başlamış ve yeniden okumak yapılandırma dosyası için yeniden başlatılması gerekiyor ise) ile Apache HTTP başlayın.

Eğer PHP/5.3.15 görmek (veya benzeri) gerekmektedir - Emin /var/log/apache2/error_log Seni php5_module etkin olduğunu söyleyen bir satır içerdiğinden emin olun.

[notice] Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch configured -- resuming normal operations

Looking up Socket file's name

MySQL ve çalışan (ile ./bin/mysqld_safe) Eğer log dosyaları bulabilirsiniz size konsola çıktı ayıklama hatları olmalıdır. localhost benim durumumda - - yapılandırmanız için farklı olabilir dosya adı hostname unutmayın.

Sonra gelir dosya Logging to önemlidir. MySQL çalışmalarını açtığında orası.

130309 12:17:59 mysqld_safe Logging to '/Users/jacek/apps/mysql/data/localhost.err'.
130309 12:17:59 mysqld_safe Starting mysqld daemon with databases from /Users/jacek/apps/mysql/data

localhost.err dosya (yine, sizinki farklı adlandırılmış olabilir) açın, yani tail -1 /Users/jacek/apps/mysql/data/localhost.err soket dosyasının adını bulmak için - bu son satırı olmalıdır.

$ tail -1 /Users/jacek/apps/mysql/data/localhost.err
Version: '5.5.27'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

socket: kısmını Not - Bir sen php.ini kullanmanız gereken soket dosya bulunuyor.

Configuring PHP5 with MySQL support - /etc/php.ini

Php.ini bahsetmişken ...

/etc dizininde /etc/php.ini.default dosya var. /etc/php.ini kopyalayın.

sudo cp /etc/php.ini.default /etc/php.ini

Açık /etc/php.ini ve bakmak için mysql.default_socket.

sudo vi /etc/php.ini

mysql.default_socket dir varsayılan /var/mysql/mysql.sock. Eğer daha önce belirttiğimiz değere değiştirmek gerekir - bu benim durumumda /tmp/mysql.sock idi.

Soket dosyanın adını yansıtmak için /etc/php.ini dosyasını değiştirin:

mysql.default_socket = /tmp/mysql.sock

Final verification

Apache HTTP yeniden başlatın.

sudo apachectl restart 

PHP5 ile ilgili herhangi bir hata olup olmadığını günlüklerini denetleyin. Hiçbir hata bitirdiniz ve MySQL ile PHP5 ince çalışmak gerektiği anlamına gelir. Tebrikler!

Çok size yardımcı olur, ama recent versions (ve hatta less recent) MySQL, hata kodu 2002 "soket [name-of yoluyla yerel MySQL sunucusuna bağlanmak olamaz anlamına değil -soket] ", yani biraz daha size olabilir bu yüzden.

Birincisi, MySQL çalışan sağlamak. Komut: mysqld başlangıç

If you still cannot connect then: What does your /etc/my.cnf look like?

Diğer 2 ileti 2002'yi bir soket hatası olduğu için yuva kontrol etmek gerekir ki doğru.

LAMP kurma üzerinde büyük bir öğretici olduğunu: http://library.linode.com/lamp-guides/centos-5.3/index-print

Ben sonra ben çalıştığını, ''127 .0.0.1 için' localhost ', modifiye de bu sorunla karşılaştı.