質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • PHP

    19821questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    8665questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • MySQL

    5691questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • PDO

    331questions

    PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

mysqlにつなげようとするとソケットの場所が違うといったエラーがでる

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 4,075

YamamotoHiroki

score 69

現在PHPでWebユーザー管理システムを作ろうと思い奮闘しています。

そこでmysqlに接続しなければならないのですが


<?php 

function connectDb(){
    try{
        return new PDO(DSN,DB_USER,DB_PASSWORD);
    } catch (PDOException $e){
        echo $e->getMessage();
        exit;
    }
}

connectDb();
 ?>

こうして接続できているか確認のためサーバーにファイルをアップし、ページを表示してみると

SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

と出てしまいます。

別ファイルで定義しているのは

define('DSN','mysql:host=localhost;dbname=dotinstall_sns_php');
define('DB_USER','dbuser');
define('DB_PASSWORD','*');
session_set_cookie_params(0,'/dot_install/');

とかです。
ちなみに/tmpにmysql.sockという名前のファイルがあるか確認してみるとありました。
また、PDO?を使うのが初めてで
一体なんなのかいまいちわかっていません。
写経中に出てきました。

エラーを回避してデータベースに接続させる方法を教えて欲しいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+2

初めまして。

出来れば、お使いのPCのOS(Macなのか、Windowsなのか、Linuxなのか。)、
ローカルのPCで開発しているのか、VPSサーバで開発しているのか、
PHPのバージョン、DBのバージョンや、
ApacheなのかNginxを使っているかなどの情報もあると
より回答しやすくなります!

localhostとしているので、ローカルのPCで開発されていると思いますので、
localhostを127.0.0.1にしてみてください。

それでもだめでしたら、
mysqlの設定ファイルの一部を書き換える必要があるかもです。
/etc/my.cnfの内容を次のように書き換えてみてください。

default-character-set=utf8

character-set-server=utf8


また調べると、
http://stackoverflow.com/questions/4448467/cant-connect-to-local-mysql-server-through-socket-var-lib-mysql-mysql-sock
http://okwave.jp/qa/q7350834.html

色々でてきます。


投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/16 17:18

    >出来れば、お使いのPCのOS(Macなのか、Windowsなのか、Linuxなのか。)、
    ローカルのPCで開発しているのか、VPSサーバで開発しているのか、
    PHPのバージョン、DBのバージョンや、
    ApacheなのかNginxを使っているかなどの情報もあると
    より回答しやすくなります!

    Mac
    ローカルのPCとはなんですか?ロリポップで実際世界中の人が閲覧可能な状態でアップロードしていますがこれもローカルなのでしょうか?
    データベースは今はrootでつなげようとしているのでローカルだと思います。
    PHP 5.5.20
    MAMPでApacheを起動して使っています。
    DBのバーションはServer version: 5.5.38-log Source distributionであってますかね・・?
    $ mysql -vで表示されたものです。

    キャンセル

  • 2015/07/16 17:31

    >localhostとしているので、ローカルのPCで開発されていると思いますので、
    localhostを127.0.0.1にしてみてください

    そのようにしたら
    SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

    と表示されました

    /etc/my.cnf
    を開くとなぜか
    sublimeテキストのパス表示のところに
    private//etc/my.cnf
    と表示されるのですがこのファイルであってますか?
    またこのファイルの中には
    default-character-set=utf8
    の記述が見当たらないです・・

    キャンセル

  • 2015/07/16 17:59

    語弊ありましたね。
    ローカルのPCというのは、YamamotoHirokiが使っておられるMacパソコン上の事を指しました。
    ロリポップのサーバの場合、ローカルではないですね。
    ロリポップのサーバをお使いになられているようなので、
    127.0.0.1ではなく、ロリポップのサーバのIPアドレスを入力してみてください。
    というよりも、DBサーバは、ロリポップで借りたサーバではないのでしょうか?
    私のかってなイメージだったのですが、
    ロリポップのサーバを借り、そこにPHP/Mysql/Apacheをインストールし
    その上でPDOを使い、DB接続しているのかと思っていました。

    キャンセル

  • 2015/07/16 18:03

    ロリポップのサーバの事はあまりわかりませんが、
    おそらくMAMPと借りているロリポップのサーバを接続出来ないかもしれません。
    ローカル上のPCでMAMPだけでやれば接続出来ると思いますが、
    ロリポップサーバにApache・PHPを入れて、DBサーバだけMAMPだと接続できなかと思いますよ。

    キャンセル

  • 2015/07/17 12:57

    ロリポップのサーバーを使用し、DBもロリポップが提供しているmysqlを使用するとすれば

    define('DSN','mysql:host=localhost;dbname=dotinstall_sns_php');

    define('DSN','mysql:host=[ロリポップが提供するIPアドレス?];dbname=dotinstall_sns_php');
    にすればいいんですかね?

    キャンセル

  • 2015/07/17 13:00

    そういうことですね。
    YamamotoHirokiさんが借りているレンタルサーバにMysqlをインストールして、
    借りたサーバのIPを指定してあげればうまく接続できるかと思います。

    キャンセル

  • 2015/07/17 13:21

    ロリポップのサーバーを使用し、DBはローカルで持つ
    なんてこともできるのでしょうか?

    キャンセル

  • 2015/07/17 13:34

    いえ、ロリポップのサーバにMysqlをインストールするという事です。
    ロリップのサーバには、Apacheを入れているかと思いますが、
    そのサーバ内にMysqlもインストールするのです。
    そのロリッポプのサーバは、WebサーバでもありDBサーバでもあるということになります。
    ロリポップのサーバにApacheを入れてWebサーバとして用いて、
    ローカルのMAMPをDBにサーバにして接続するというのは出来ないかと思いますよ。

    キャンセル

  • 2015/07/17 13:40

    今更ですが、再度ご確認したいことがあります。
    ロリポップのサーバには、Apache/Mysqlはインストールされて実際に使っているのでしょうか?
    それとも、Mac内のMAMPにApach2/Mysqlを起動してローカル内でPHPでDB接続を行っておられるのでしょうか?

    キャンセル

  • 2015/07/17 15:21

    長くお付き合いしてもらいありがとうございます。

    >ロリポップのサーバには、Apache/Mysqlはインストールされて実際に使っているのでしょうか?
    それとも、Mac内のMAMPにApach2/Mysqlを起動してローカル内でPHPでDB接続を行っておられるのでしょうか?

    これのどちらに属するのかわからないのですが
    手順としては

    1.コードを書きます
    2.FileZilla でロリポップのサーバー情報を入力して接続し、コードをかいたファイルをアップロードします
    3.http://discovery-sup.weblike.jp/dot_install/signup.phpにアクセスします
    4.エラーコードが表示される

    です
    Macの中でMAMPは起動しています。
    回答になっているかわかりませんが
    ロリポップに対しては何もアクションは起こしていません
    ましてやロリポップのサーバー内にmysqlをインストールするなどといったことはしていません
    というかロリポップに元々入ってる様子です・・・?

    >ローカル内でPHPでDB接続を行って
    そうではないと思います。
    確認の方法はありますか?

    わかりにくくてすいません。
    まだサーバーがどういったものなのかいまいちわかっていないもので・・

    キャンセル

  • 2015/07/17 15:53

    いえいえ!
    すぐにDB接続出来るようにしてあげたいのですが、こちらの理解が悪くて
    時間をおかけてして申し訳ありません。

    > ロリポップに対しては何もアクションは起こしていません
    なるほどですね。
    実際、ロリポップの方でMysqlが既にインストールされている場合は、
    ロリポップのMysqlと接続する必要がありますので、
    例え、ローカルPCのMAMPが起動されていなくても問題はありません。

    あと、利用されておられるロリポップのプランをお聞きしても宜しいでしょうか?

    キャンセル

  • 2015/07/17 16:00

    http://lolipop.jp/
    を見ているのですが、「コロリポプラン」だと、Mysqlは入っていないようですね。。
    もしYamamotoHiroki様が、「コロリポプラン」を利用しているようであれば接続はできないです。
    ただ、それ以外のサーバであれば接続できますので、Mysqlの設定・PHP側の接続プログラムをしっかり出来れば接続出来ます。

    キャンセル

  • 2015/07/17 16:02

    ロリポプランです

    キャンセル

  • 2015/07/17 16:03

    あ、ではロリポップで運用する場合はMAMPの中をいくらいじったところで何もかわらないんですね!

    キャンセル

  • 2015/07/17 16:05

    今回の質問の回答とは全く関係ないのですが
    価格が少し高くなってしまうのが懸念点ではありますがロリポップレンタルサーバではなく、http://vps.sakura.ad.jp/
    さくらVPSを借りて利用された方が良いかと思います。

    キャンセル

  • 2015/07/17 16:07

    ロリポプランです
    それなら、Mysqlは入っていますね!
    >あ、ではロリポップで運用する場合はMAMPの中をいくらいじったところで何もかわらないんですね!
    そうですね。
    Mysqlのsocketの設定はおそらく、ローカルでやられているかと思いますので、
    今回編集された、
    define('DSN','mysql:host=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=dotinstall_sns_php');
    も変更し直す必要があります。

    キャンセル

  • 2015/07/17 16:11

    おそらく、
    http://dotinstall.com/lessons/sns_php_v2/9601
    を見て進められているかと思いますが、この場合Vagrantという仮想環境構築ツールを用いてローカル開発環境を作られておられるので、
    このような感じで、ターミナルから操作しながら進めるのであれば、
    さくらVPSの方が良いかなと思います。

    YamamotoHiroki様が、上記ドットインストールのリンクを見ながら進めれておられるのであれば、DBの作成やその他設定は、ローカルのPCのターミナルからやられているかと思いますので、ロリポップのDBの設定とはこれも全く関係ありません。
    ロリポップレンタルサーバから、Mysqlの設定をする必要があります。

    キャンセル

  • 2015/07/17 16:14

    ローカル上で動作させたいのであれば、MAMPを使ってDB接続の設定等は、
    define('DSN','mysql:host=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;host=localhost;dbname=dotinstall_sns_php');
    のような形で設定するのですが、
    今回の場合は、FileZilaを用いて、借りているサーバにPHPファイルをアップロードしているわけですから、ロリポップサーバ上でPHPとMysqlを接続しない限り、
    http://discovery-sup.weblike.jp/dot_install/signup.php

    SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/Applications/MAMP/tmp/mysql/mysql.sock' (2)
    というエラーをはきます。

    キャンセル

  • 2015/07/17 16:20

    まとめ的になりますがロリポップサーバに接続したいのであれば
    手順として、
    1)ロリポップの管理画面から、Mysqlの設定(DBを作成します。dotinstall_sns_phpを作成する)
    YamamotoHiroki様のMacPCにMAMPは無視してください。
    2)PHP側のプログラムのhostを
    203.189.109.103
    にしてください。
    203.189.109.103というのは、
    http://o2soft.jp/tool/domain/?cmd=sei&var1=discovery-sup.weblike.jp
    からdiscovery-sup.weblike.jpドメインからIPアドレスを正引きした結果です。
    用語は今はわからなくても大丈夫です。

    define('DSN','mysql:host=203.189.109.103;dbname=dotinstall_sns_php');
    define('DB_USER','DBユーザー名を入れる');
    define('DB_PASSWORD','DBのパスワードを入れる。');
    これで出来るかと思います。

    キャンセル

  • 2015/07/17 16:24

    > 203.189.109.103
    にしてください。
    203.189.109.103というのは、
    http://o2soft.jp/tool/domain/?cmd=sei&var1=discovery-sup.weblike.jp
    からdiscovery-sup.weblike.jpドメインからIPアドレスを正引きした結果です。
    用語は今はわからなくても大丈夫です。
    申し訳ありません。

    これは違いますので忘れてください。

    キャンセル

  • 2015/07/17 16:28

    なるほどなるほど
    新しくDBを作成することにしました。

    >おそらく、
    http://dotinstall.com/lessons/sns_php_v2/9601
    を見て進められているかと思いますが
    そうです

    ではロリポップのmysqlの設定をみると

    サーバ: mysql024.phy.lolipop.lan (mysql024.phy.lolipop.jp via TCP/IP)
    サーバのバージョン: 5.6.14-log
    プロトコルバージョン: 10
    ユーザ: LAA0578893@210.172.144.67
    MySQL の文字セット: UTF-8 Unicode (utf8)

    となっていましたが

    define('DSN','mysql:host=210.172.144.67;dbname=LAA0578893-28jogs');
    define('DB_USER','LAA0578893');

    こうすればOKでしょうか?

    キャンセル

  • 2015/07/17 16:28

    http://q.hatena.ne.jp/1319564432
    見る限り、ロリポップのDBサーバは別に用意されているみたいです。
    上記のリンク参考になるかと思いますよ。

    キャンセル

  • 2015/07/17 16:29

    上記の記事リンクからの引用です。
    >
    ロリポップの場合、Web サーバとデータベースサーバは、別になっていますので、
    > mysql_connect('localhost','root','') or die(mysql_error());
    のように localhost を使っては、接続できません。

    ロリポップのユーザ専用ページで、データベース作成時で、表示された「サーバー名」、「データベース名」、「ユーザー名」、「作成時に入力したパスワード」を 使って、接続する必要が有ります。

    例えば、mysql00.lolipop.jp のサーバで、ユーザー名とデータベース名が、LA123456789 、パスワードが、password だったとすると
    mysql_connect( 'mysql00.lolipop.jp','LA123456789','password' ) or die(mysql_error());

    の用になります。
    サーバ名、ユーザ名、パスワードは、自分の設定されたものに合わせてください。

    キャンセル

  • 2015/07/17 16:34 編集

    210.172.144.67をmysql***.phy.lolipop.jpに変えてみてください

    キャンセル

  • 2015/07/17 16:55 編集

    define('DSN','mysql:host=mysql***.phy.lolipop.jp;dbname=LAA0578893-*******');
    define('DB_USER','LA********');
    とすると

    SQLSTATE[28000] [1045] Access denied for user 'LAA0578893'@'210.172.144.97' (using password: YES)

    と表示されてしまいます。
    あと一歩な気がするんですが、、
    >(using password: YES)
    これはパスワードはあってますよ
    という意味ですよね?
    権限の問題でしょうか?

    キャンセル

  • 2015/07/17 16:56

    PDO(DSN,DB_USER,DB_PASSWORD);

    PDOでつないでることに何か問題があったりしますか?

    キャンセル

  • 2015/07/17 16:56

    210.172.144.67をmysql024.phy.lolipop.jpに変えてもらえますでしょうか!?

    キャンセル

  • 2015/07/17 16:57 編集

    >SQLSTATE[28000] [1045] Access denied for user 'LAA0******'@'210.172.144.97' (using password: YES)

    ユーザー名等が間違っていた場合かと思います

    キャンセル

  • 2015/07/17 16:58

    > PDOでつないでることに何か問題があったりしますか?
    いえ、問題はありませんよ。

    キャンセル

  • 2015/07/17 16:59

    変えたんですけど
    エラーメッセージが
    SQLSTATE[28000] [1045] Access denied for user 'LAA0578893'@'210.172.144.97' (using password: YES)
    です。
    かえれてないんですかね?;;

    キャンセル

  • 2015/07/17 17:00

    なるほど。
    現在のコード(パスワードはもちろんふせていただいて)を見せていただけますでしょうか?

    キャンセル

  • 2015/07/17 17:04

    config.php

    <?php
    define('DSN','mysql:host=mysql024.phy.lolipop.jp;dbname=LAA0578893-28jogs');
    define('DB_USER','LAA0578893');
    define('DB_PASSWORD','*****');
    #unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock
    define('SITE_URL','http://discovery-sup.weblike.jp/dot_install/');
    define('PASSWORD_KEY','*****');

    error_reporting(E_ALL);

    session_set_cookie_params(0,'/dot_install/');

    キャンセル

  • 2015/07/17 17:06

    長いですが
    signup.php

    <?php

    require_once('config.php');
    require_once('functions.php');

    session_start();

    function setToken(){
    $token = sha1(uniqid(mt_rand(), true));
    $_SESSION['token'] = $token;
    }

    function checkToken(){
    if (empty($_SESSION['token']) || ($_SESSION['token'] != $_POST['token'])){
    echo "不正なポストが行われまいした!";
    exit;
    }
    }

    function emailExists($email, $dbh){
    $sql = "select * from user where email = :email limit 1";
    $stmt = $dbh->prepare($sql);
    $stmt->execute(array(":email" => $email));
    $user = $stmt->fetch();
    return $user ? true : false;
    }


    if($_SERVER['REQUEST_METHOD'] != 'POST'){
    //CSRF対策
    setToken();
    }else{
    checkToken();

    $name = $_POST['name'];
    $email = $_POST['email'];
    $password = $_POST['password'];

    $dbh = connectDb();

    $err = array();

    //名前がから?
    if($name ==' '){
    $err['name'] = '名前を入力してください';
    }

    //メールアドレスが正しい?
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    $err['email'] = 'メールアドレスの形式が正しくないです';
    }

    if(emailExists($email, $dbh)){
    $err['email'] = 'このメールアドレスは既に登録されています';
    }

    //メールアドレスがから?
    if($email == ' '){
    $err['email'] = 'メールアドレスを入力してください';
    }

    //パスワードがから?
    if($password == ' '){
    $err['password'] = 'パスワードを入力してください';
    }

    if(empty($err)){
    //登録処理
    }

    }

    ?>

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="UTF-8">
    <title>新規ユーザー登録</title>
    </head>
    <body>

    <h1>新規ユーザー登録</h1>

    <?php

    connectDb();
    echo $err ; ?>


    <form action="" method="POST">
    <p>お名前:<input type="text" name="name" value=""><?php echo h($err['name']); ?></p>
    <p>メールアドレス:<input type="text" name="email" value=""> <?php echo h($err['email']); ?></p>
    <p>パスワード:<input type="password" name="password" value=""> <?php echo h($err['password']); ?></p>

    <input type="hidden" name="token" value="<?php echo h($_SESSION['token']); ?>">

    <p><input type="submit" value="新規登録"><a href="index.php">戻る</a></p>
    </form>
    </body>
    </html>

    キャンセル

  • 2015/07/17 17:06

    >
    <?php

    connectDb();
    echo $err ; ?>

    おそらくここでエラーが出ます

    キャンセル

  • 2015/07/17 17:12 編集

    ありがとうございます。
    config.phpで以下のどれかが間違っているかと思います。
    「サーバー名」、「データベース名」、「ユーザー名」、「作成時に入力したパスワード」
    一応ですが、
    mysql***phy.lolipop.jp

    mysql***.phy.lolipop.lan
    変えてもらえますでしょうか?

    キャンセル

  • 2015/07/17 17:18

    http://freo.jp/support/view/209
    からの引用です。
    >
    URL : http://cccabinet.jpn.org/

    設定に誤りがあると出るエラーみたいです。

    ロリポップのユーザー専用のデータベースを確認して
    接続先(MySQL用) ⇒ mysql***.phy.lolipop.jp(サーバー)
    ユーザー名(MySQL用) ⇒ LAA*******(ユーザー名)
    パスワード(MySQL用) ⇒ *********(パスワード確認で表示されるパスワード)
    データベース名 ⇒ LAA*******-******(データベース名)
    上記が1文字でも誤っていたらエラーが出ます。空白やタブとかも含まれてないかもう一度config.phpを確認してみてはいかがでしょうか?

    キャンセル

  • 2015/07/17 17:22

    >mysql024.phy.lolipop.jp

    mysql024.phy.lolipop.lan
    変えてもらえますでしょうか?

    エラーメッセージ
    SQLSTATE[28000] [1045] Access denied for user 'LAA0578893'@'172.17.0.97' (using password: YES)
    でした

    キャンセル

  • 2015/07/17 17:25

    それでは、
    mysql024.phy.lolipop.jp
    に戻しておいてください。

    パスワードは、ロリポップMysqlのパスワードを使用していますでしょうか?

    「サーバー名」、「データベース名」、「ユーザー名」、「作成時に入力したパスワード」
    のどれかが間違っていると思いますので。

    キャンセル

  • 2015/07/17 17:32

    わかりました。

    少し試行錯誤してきます!

    キャンセル

  • 2015/07/17 17:36

    はい:)
    頑張ってください!

    キャンセル

  • 2015/07/17 17:50

    できました!!!!!

    結論パスワードが間違っていました。

    >「サーバー名」、「データベース名」、「ユーザー名」、「作成時に入力したパスワード」
    のどれかが間違っていると思いますので。
    ここまで絞っていただいたおかげで気づけました。
    本当に長々とお付き合いしていただきありがとうございました!

    キャンセル

  • 2015/07/17 18:01

    良かったです:)!!
    いえいえ!!

    キャンセル

  • 2015/07/17 18:08

    余談ですが、
    2015/07/17 16:55
    の投稿等にある、ロリポップのDB情報はセキュリティ上の観点から、伏せておいた方が良いと思われます。
    私のコメントも*を入れて編集しましたので。

    キャンセル

  • 2015/07/17 19:46

    しました!
    ほんとうにありがとうございました!

    キャンセル

+1

DSNをmysql:unix_socket=/tmp/mysql.sock;host=localhost;dbname=testdb
http://php.net/manual/ja/ref.pdo-mysql.connection.php
unix_socketで指定

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/16 13:17

    define('DSN','mysql:host=localhost;dbname=dotinstall_sns_php');

    define('DSN','mysql:unix_socket=/tmp/mysql.sock;host=localhost;dbname=dotinstall_sns_php');
    に書き換えましたが何も変わりませんでした。。

    >unix_socketで指定
    とはどういう意味でしょうか?

    キャンセル

  • 2015/07/16 13:51 編集

    unix_socketの部分は本当にあなたの環境では/tmp/mysql.sockにありますでしょうか?
    mysql.sockのあるパスを指定してあげて下さい。
    MAMPの場合は/Applications/MAMP/tmp/mysql/mysql.sock
    ここにmysql.sockがあります。

    キャンセル

  • 2015/07/16 17:23

    $ ls
    Applications home
    Library installer.failurerequests
    Network net
    System opt
    Users private
    Volumes sbin
    bin tmp
    cores usr
    dev var
    etc ユーザ情報
    $ cd tmp/
    $ ls
    KSOutOfProcessFetcher.501.KvQVA6MpDzYxvkzUKAnRQWNnZYg=
    SymMCLM
    SymUIAgents
    aprN33wM9
    com.apple.launchd.AGy6x10zwI
    com.apple.launchd.qpo9OulcyR
    com.symantec.avscandaemonB
    com.symantec.liveupdate.daemonport
    mysql.sock
    symc000100a4

    ターミナルでの結果です
    確かに
    /tmp/mysql.sockにあると思うのですが・・

    MAMPを使っているのですが
    /Applications/MAMP/tmp/mysql/mysql.sockこちらのmysql.sockを使用しないとダメなのでしょうか?

    キャンセル

  • 2015/07/17 09:50

    MAMPのmysqlを使用する場合はダメな可能性が高いです。

    キャンセル

  • 2015/07/17 12:01

    /Applications/MAMP/tmp/mysql
    にmysql.sockがあるのは確認しました

    define('DSN','mysql:host=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;host=localhost;dbname=dotinstall_sns_php');

    に書き換えて接続をすると

    SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/Applications/MAMP/tmp/mysql/mysql.sock' (2)

    と表示されてしまいました。

    キャンセル

  • 2015/07/17 13:23

    × host=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;host=localhost;dbname=dotinstall_sns_php
    ○ host=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=dotinstall_sns_php

    mysqlは起動されてますか?

    キャンセル

  • 2015/07/17 13:44

    nanndemoiikara様
    横から失礼致します。
    ロリポップサーバ(Apache)+ローカルのMAMP(Mysql)は接続出来るのでしょうか?
    私の知識不足で、出来ないのかと思っていたのですが。。

    キャンセル

  • 2015/07/17 15:12

    define('DSN','mysql:host=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=dotinstall_sns_php'); にしましたが

    SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/Applications/MAMP/tmp/mysql/mysql.sock' (2)
    と表示されてしまいました。

    >mysqlは起動されてますか?
    起動していると思います
    MAMP上では起動中となっております
    何度も再起動していますが、何か確認方法はありますか?

    ターミナル上で$ mysql -u root -p
    とするとパスワードが要求されて
    入力すると
    mysql>
    この状態になるのですが
    これは起動していると思って間違いないですよね?

    キャンセル

  • 2015/07/21 14:31

    nanndemoiikara様
    横から失礼致します。
    > ロリポップサーバ(Apache)+ローカルのMAMP(Mysql)は接続出来るのでしょうか?
    > 私の知識不足で、出来ないのかと思っていたのですが。。

    できません。
    ローカル環境で繋がらないのかと思っておりました。

    キャンセル

0

MySQLサーバーが起動していない場合にも同じエラーが起きますが、起動していますか?

サーバーの環境(OS等)が分からないので、どうやったら調べられるのか、などについては提示できませんが・・・

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/16 17:19

    起動しています!

    キャンセル

0

>別ファイルで定義

単純にこの「別ファイル」をincludeし忘れているということはありませんか?

まさかとは思いますが、提示されているソースにincludeの記述がないので、念のため・・・

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/16 17:13

    <?php

    require_once('config.php');
    require_once('functions.php');

    session_start();

    if (empty($_SESSION['me'])){
    header('Location: '.SITE_URL.'login.php');
    exit;
    }
    ?>

    冒頭ではこのように読み込んでいて
    読み込んでいないと使えない関数も使えるので読み込んでいると思います!

    質問するときにいつも思うのですが
    コード全部を載せたら長くなりますが正確さ?が増しますよね
    でも数ファイルに渡って載せるのは回答する側からとったらしんどいかな、と思い抜粋してるのですが
    全部のせたほうがいいのでしょうか?

    キャンセル

0

/etc/my.cnf,/etc/php.iniの以下の内容を確認してみてください。

----<以下 /etc/my.cnf>----
[mysqld]

socket=/var/lib/mysql/mysql.sock →①

[client]
socket=/var/lib/mysql/mysql.sock →①と同じにする


----<以下 /etc/php.ini>----

mysql.default_socket = /var/lib/mysql/mysql.sock →①と同じにする

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19821questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    8665questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • MySQL

    5691questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • PDO

    331questions

    PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。