8


3

ソケットを介してローカルMySQLサーバーに接続できません

サイトをアップロードまたはページを送信すると、サイトで次のエラーが表示されます。

_ mysql_real_escape_string()[function.mysql-real-escape-string]:ソケット '/var/lib/mysql/mysql.sock’を介してローカルMySQLサーバーに接続できません(2) _

これはどういう意味ですか?

2 Answer


13


エラーはmysql_real_escape_string()の呼び出しによってスローされているため、mysql_connect()を最初に呼び出して、有効なdbハンドルをmysql_real_escape_stringに渡さなかった(またはmysql_connect()の呼び出しが失敗した)ことを意味します。

状況によっては、mysql拡張機能はphp.iniのデフォルト設定を使用して自動的に接続しようとし、my.cnfが利用できない場合はフェールオーバーします-これは明らかに無効です。 または、設定は有効ですが、mysqldが実行されていない可能性があります。

データベースに正常に接続しているスクリプトがありますか?

データベースのユーザー名とパスワードはありますか?

Try:

check_running();

$user=''; // fill in your details
$password=''; // fill in your details

$hosts=array(
  'localhost', '127.0.0.1', $_SERVER['HTTP_HOST'], $_SERVER['SERVER_ADDR']
);
foreach ($hosts as $addr) {
   try_con($addr, $user, $password);
   try_con($addr . ':3306', $user, $password);
}

function try_con($host, $user, $password)
{
 $dbh=mysql_connect($host, $user, $password);
 if ($dbh) {
     print "Connected OK with $host, $user, $password
\n";
 } else {
     print "Failed with $host, $user, $password
\n";
 }
}

function check_running()
{
   // this assumes that you are using Apache on a Unix/Linux box
   $chk=`ps -ef | grep httpd | grep -v grep`;
   if ($chk) {
      print "Checking for mysqld process: " . `ps -ef | grep mysqld | grep -v grep` . "
\n";
   } else {
       print "Cannot check mysqld process
\n";
   }
 }

HTH

C.


2


はい、正確に、一部のサーバーは接続前にmysql関数を使用するときにデフォルトの接続パラメーターを渡し、エラーをスローします。他のサーバーは、mysql_connect()接続を確立した後、mysql_real_escape_string()