Mac OS Snow Leopard 10.6.4でローカルにmySQLに接続しようとすると、エラーが発生します。 mySQL 5.1.46を実行しています。コンソールを使用してログインできます。 PHP 5.3.2を実行していますが、phpinfo()
ページは正常に動作しています。 PHPを実行しているので、コンソールとSequel Proの両方を使用してmySQLサーバーにログインできます。
だから私はそれがソケットの問題だと思った。/etcディレクトリにはphp.iniがなく、php.ini.defaultがあります。だから私はそこに行き、「default_socket」を見るすべての場所でそれを次のように変更します:
_/var/mysql/mysql.sock
_
に:
_/tmp/mysql.sock
_
次の場所に表示されます。
_pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
_
PhpMyAdminに接続しようとすると、次のエラーが表示されます。エラーなしでセッションを開始できません。PHPおよび/またはWebサーバーログファイルに記録されているエラーを確認し、PHPを構成してください正しくインストール。
そして、phpinfo()
ファイルを調べると、mySQLで次のようになります。
_mysql.default_socket /var/mysql/mysql.sock /var/mysql/mysql.sock
_
私はApacheを再起動します...一体、コンピュータ全体を再起動します。それでも、何も。 mySQLが機能していること、PHPが機能していることはわかっていますが、話せません。
何か助けは?
PHPはロードするphp.iniファイル(php.ini.defaultではない)を探す必要があるため、php.ini.defaultの名前をphp.iniに変更してみてください。 Snow LeopardにApache/PHP/MySQLをインストールする を参照してください。
Mysqlまたはphpの設定を変更したくない場合は、次のハックを設定します。
mkdir/var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
これにより、PHPが実際のmysql.sockに接続するために探している場所にエイリアスが作成されます。
私は問題を解決するために次のことを行いました(Mac OS x)-
1.)最初にApacheウェブルートに移動します(/ etc/Apache2/httpd.confから利用可能なパス-> DocumentRoot)。私にとっては/ Library/WebServer/Documents /
1.1)その場所にshowphpconfig.phpを作成します
2.)ブラウザでこのファイルにアクセスします。 http://127.0.0.1/showphpconfig.php
これにより、Apacheサーバーが使用している構成ファイルが表示されます。
私は/private/etc/php.ini
を使用していました
また、phpが/var/mysql/mysql.sock
のmysql sockファイルを使用していることも確認しました
3.)php.iniファイルのコピーを作成しました。それを開き、mysql.sockを含むすべての行を見つけます。
これらの行をコピーして、以下のように新しいエントリを作成します-
;pdo_mysql.default_socket=/var/mysql/mysql.sock
pdo_mysql.default_socket=/tmp/mysql.sock
[〜#〜] imp [〜#〜] ";"最初の行の前、つまり、最初の行をコメント化しています
そのような行が約4つあるはずです
これで、mysqlソケットファイルが実際には/ tmpフォルダーに存在することをphpに伝えました
4.)Apacheサーバーを再起動します-apachectl restart
wordpress構成画面が表示されます。
内容を含む/etc/my.cnfファイルを作成し、Vikashの推奨に従ってディレクトリを作成するだけでは、問題は解決しませんでした。 mysql.sockは、これを実行してマシンを再起動した後でも、/ tmpに残っています。ファイルを手動で/ tmpから/ var/mysqlに移動し、エラーを解決しました。しかし、私は再起動すると問題が再浮上するだろうと感じていました。今回はエラーが少し異なりました-接続が拒否されました。新しいソケットが/ tmpで開かれていて、古いソケットが/ var/mysqlにまだ残っていることがわかりました。コードは古いコードを使用しようとして、アクセスを拒否されていました。だから私はシンボリックリンクでシドのハックを使用し、それが問題を修正しました。再起動しても、この修正は引き続き機能します。ただし、システムが構成済みの/ var/mysqlではなく/ tmpに新しいソケットを開く原因は何ですか。
シンボリックリンクを作成してみてください。私のXAMPPインストールではこれはうまくいきました:
Sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/ /var/mysql
Mysql.sockをPHPに持ってくる
MySQLおよびLeopardで発生した問題の1つは、mysql.sockファイルの場所です。以前は、このファイルのデフォルトの場所は/ tmpディレクトリでした。その場所は/ var/mysqlディレクトリに移動しました。 PHPはそれを探します。残念ながら、MySQLのデフォルトの場所は、古い場所にあります。/etcディレクトリにmy.cnf設定ファイルを作成することで、これを修正できます。 。次の内容のファイルを/etc/my.cnfに保存します。
[クライアント]ソケット= /var/mysql/mysql.sock
[mysqld]ソケット= /var/mysql/mysql.sock
ターミナルウィンドウで、次のコマンドを入力して、sockファイルのディレクトリを作成します。
Sudo mkdir/var/mysql Sudo chown _mysql/var/mysql
ソース: http://www.procata.com/blog/archives/2007/10/28/working-with-php-5-in-mac-os-x-105/
ソケットに関連する問題である必要はありません。単純なPHPスクリプトからMySQLに接続してみます:
_<?php
error_reporting(E_ALL);
mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
echo 'No errors';
?>
_
PHP.iniパスについては、phpinfo();
で「ロードされた構成ファイル」を探します。 _/etc/php.ini.default
_に配置する必要はありません