web-dev-qa-db-ja.com

Mac OS Snow Leopard:phpinfo()ページでmysql.default_socketの値が変更されないのはなぜですか?

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が機能していることはわかっていますが、話せません。

何か助けは?

5
Jeff

PHPはロードするphp.iniファイル(php.ini.defaultではない)を探す必要があるため、php.ini.defaultの名前をphp.iniに変更してみてください。 Snow LeopardにApache/PHP/MySQLをインストールする を参照してください。

7

Mysqlまたはphpの設定を変更したくない場合は、次のハックを設定します。

mkdir/var/mysql

ln -s /tmp/mysql.sock /var/mysql/mysql.sock

これにより、PHPが実際のmysql.sockに接続するために探している場所にエイリアスが作成されます。

5
Sid Ahuja

私は問題を解決するために次のことを行いました(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構成画面が表示されます。

1
PlanetUnknown

内容を含む/etc/my.cnfファイルを作成し、Vikashの推奨に従ってディレクトリを作成するだけでは、問題は解決しませんでした。 mysql.sockは、これを実行してマシンを再起動した後でも、/ tmpに残っています。ファイルを手動で/ tmpから/ var/mysqlに移動し、エラーを解決しました。しかし、私は再起動すると問題が再浮上するだろうと感じていました。今回はエラーが少し異なりました-接続が拒否されました。新しいソケットが/ tmpで開かれていて、古いソケットが/ var/mysqlにまだ残っていることがわかりました。コードは古いコードを使用しようとして、アクセスを拒否されていました。だから私はシンボリックリンクでシドのハックを使用し、それが問題を修正しました。再起動しても、この修正は引き続き機能します。ただし、システムが構成済みの/ var/mysqlではなく/ tmpに新しいソケットを開く原因は何ですか。

1
barclay

シンボリックリンクを作成してみてください。私のXAMPPインストールではこれはうまくいきました:

Sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/ /var/mysql
1
Warden

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/

1
Vikash

ソケットに関連する問題である必要はありません。単純な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_に配置する必要はありません

0
Lekensteyn