人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

さくらのレンタルサーバーについて。MySQLにデータを登録できない。

さくらのレンタルサーバーで簡単な会員登録プログラムを作っています。
index.php → check.php → thanks.php ・・・のような感じです。
ルートディレクトリには/dbconnect.phpを作成してあります。

「登録する」ボタンをクリックするとデータベースへ接続し、入力したデータを登録できるはずなんですが、
以下のようなメッセージが出力されます。

「Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)」

少し検索したところ、
MySQLサーバーで使うソケットをクライアントに合わせるのがいいらしんですけど、
さくらのレンタルサーバーでMySQLの設定を行う/etc/my.cnfが見当たりません。

アドバイスいただけないでしょうか?
以下が制作中のサイトです。
http://yuuri.sakura.ne.jp/join/index.php

●質問者: kireifish
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
●500ポイント ベストアンサー

さくらはコントロールパネルにあるphpMyAdminで操作します。
http://support.sakura.ad.jp/manual/rs/web/db.html

phpMyAdminすらも正常に動かないとなれば、
ソケット関連を疑っても良いですが、
その場合はサポートにメールして対応してもらうことになると思います。

ここから本題に移りますが、
リンク先では、いきなりメアドや画像の登録を求められ、
dbconnect.php の中身は見れませんでした。

従って、実際にどのようなプログラムを組んでいるかはわかりませんが、
勝手な想像では、事前の文法チェックすらも行わずにアップロードしたものを、
サーバー上でいきなりテストして、頻繁にエラーで止まっているものと推測します。

こちらの推測が正しければ、エラーによる途中停止を繰り返すことによって、
データベースと接続したままになっているソケットが多数存在し、
それらが時間切れで開放されるまで接続できない状況が発生することも、
想像に難くありません。(こちょこちょやってると繋がることもあるということ)

引き続き想像で話をしますが、
最近は、WindowsやMacでも簡単にWeb+DB+phpサーバを構築できるようになってますので、
自分のためにも、他人のためにも、ローカルでのテストをしっかり行うようにしましょう。

自前で構築する楽な方法としては、
xamppというソフトで全てを一括インストールする方法があります。
http://www.apachefriends.org/jp/xampp-windows.html

ローカルで十分にテストしたものをアップロードしてもダメということであれば、
サーバーのトラブルか混雑が考えられますので、さくらのサポートに報告して、
サーバーを変えてもらえないか相談してみてください。

ざっくりとですが、現状では以上です。


余談になりますが、
コードの相談は自分のサイトを明かさないほうが良かったのです。
URLが判らなければコードを見せても攻撃対象になる心配はほぼ無いので・・・


kireifishさんのコメント
windofjulyさん、さっそくのお返事ありがとうございます。 index.phpの中身の一部です。 <?php require('../dbconnect.php'); session_start(); (以下略)・・・ ---------------------------------- check.phpの中身の一部です。 <?php session_start(); require('../dbconnect.php'); if (!isset($_SESSION['join'])) { header('Location: index.php'); exit(); } (以下略)・・・ ---------------------------------- dbconnect.phpの中身の全部です。 <?php mysql_connect('mysql426.db.sakura.ne.jp', 'yuuri', 'nakata14') or die(mysql_error()); mysql_select_db('yuuri_mini_bbs'); mysql_query('SET NAMES UTF8'); ?> ---------------------------------- 先ほど、 index.phpの 「require('../dbconnect.php'); 」の部分をいじっていると、 つながったり、つながらなかったりしました。 僕の単なるディレクトリの配置ミスなのか・・・・。うーん・・・。 あと、XAMPPではMySQLに接続できます。

kireifishさんのコメント
あったたたたた・・・やばいもの書いちゃいました・・・。 でも・・・まぁ・・・あとで変更するんで・・・

kireifishさんのコメント
設定変更しました。

うぃんどさんのコメント
requireなのでパスの問題による読み込みエラーならば、 そこで処理が止まり、件のエラーにはならないです。 require_onceとしていないのはrequireをやり直すような使い方をしているのだと思いますが、 index.phpの中やcheck.phpの中で何度もdbconnect.phpをrequireしてたりしませんか? エラーを起こしてるのは、ほんとにmysql_connectの箇所ですか? $con = mysql_connect('mysql426.db.sakura.ne.jp', 'yuuri', 'nakata14') or die('1' . mysql_error()); mysql_select_db('yuuri_mini_bbs') or die('2' . mysql_error()); mysql_query('SET NAMES UTF8') or die('3' . mysql_error()); 以上、とりあえず確認だけ・・・何か思いついたら、またコメントします。

kireifishさんのコメント
ちなみにこれは、マイコミブックスの「よくわかるPHPの教科書」という参考書を読みながら、作成しています。 http://book.mycom.co.jp/support/pc/php/ (よく見たら、訂正表いっぱいだ・・・。)

kireifishさんのコメント
目次でいうと、 Part5 実用的なプログラムの制作 ・・・ Practice2 「Twitter風ひとこと掲示板」を作成する です。

kireifishさんのコメント
今、僕が作成中のサンプルコードです。(サポートページでもダウンロードできます) http://book.mycom.co.jp/support/pc/php/PHP_sample.zip part5-2_sample

うぃんどさんのコメント
本は持ってないので後ほどソースコードを追ってみます・・・ 私の遅い脳みそが解を出す前に他の人から回答あるかもしれませんが・・・ それはそれということで・・・

うぃんどさんのコメント
ざっくりとコードを見ただけだと、特にトラブルになりそうな記述は見当たらず。 しかしながら、 明示的なmysql_closeが無く、データベースセッションが切れるまでに時間がかかってしまって、 回答にも書いたようにソケットが開放されるまで繋がらないという可能性はぬぐえていない。 この場合の対処はdbconnect.phpをrequireして使っているファイルすべてにおいて、 下記の箇所すべてにmysql_close();を入れて様子をみてみることから始めます。 ・header('Location: ほげほげ.php'); exit(); の前 ・ファイルの一番最後 それと、トラブルがほんとはどこで起きているのかを探るため、少し前にコメントしたように、 mysql_系関数全てにor die('通し番号' . mysql_error()) をつけて、 False(処理失敗やデータ取得失敗してる箇所を特定して欲しい)にならないかもテストしてみて欲しいです。 日を改めてコードをみると何か気づくこともありますので、日を改めて明日か明後日にも、もう一度見てみますので、それまで出来る範囲でテストしてみてください。

kireifishさんのコメント
解決しました! https://www.facebook.com/h2ospace.yokuwakaru http://d.hatena.ne.jp/infinity_th4/20111111/1321043392 どうやらサンプルコード自体に間違いがあったようです。 part5-2_sample\check.phpの 14行目の mysql_real_escape_stringsha1(($_SESSION['join']['password'])), 正しくは、 sha1(mysql_real_escape_string($_SESSION['join']['password'])), でした。 教科書を信用しちゃいけないんですね・・・。

うぃんどさんのコメント
た、確かに・・・エディタで見てたのに色の違いに気づかなかった・・・ お役に立てず申し訳ない。 後ほど、コメント付きメッセージ送りますので、 ポイント残高の確認をしておいてください。

kireifishさんのコメント
とりあえず、Amazonでレビューしてきました。(48時間後にはアップされるはず) http://www.amazon.co.jp/gp/product/4839933146/ref=cm_cr_mts_prod_img
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ